web-dev-qa-db-ja.com

`drush test-run`でテストするときに変数を検査する方法。

SimpleTestsでテストするとき、変数を検査したいと思います。 var_dump()などはDrushの出力にレンダリングされません。シミュレートされたブラウザーがDrupalWebTestで実行されているため、Xdebugインタラクティブデバッガーは機能しません。

コード内の変数の内容をレンダリング、エクスポート、検査、またはダンプする方法を教えてください。つまりdpm()var_export()などのDrupalWebTestなど。

3
berkes

Troubleshooting Tests のドキュメントには多くの洞察があります:

  1. debug() in Drupal 7.を使用します。これはテスト中に機能し、テスト結果に出力を表示します。
  2. 常に合格するテストを使用してそれらを印刷します($this->pass(var_export($var, TRUE));などを使用)。少々厄介ですが、他に何もしなくても機能します。
2
David Watson

呼び出す DrupalTestCase :: assert() 表示するメッセージを渡します。

$this->assert(TRUE,
  t('Variable content: @variable', array('@variable' => var_export($variable, TRUE))
);

これは DrupalTestCase :: assertIdentical() で使用されるコードに似ています。違いは、最初の引数がTRUEであることです。これは、変数の内容を出力しているだけで、失敗することはないためです。

protected function assertIdentical($first, $second, $message = '', $group = 'Other') {
  return $this->assert($first === $second, $message ? $message : t('Value @first is identical to value @second.', array('@first' => var_export($first, TRUE), '@second' => var_export($second, TRUE))), $group);
}
2
kiamlaluno

print_r($variable)を試しましたか?人間に優しい出力のために、あなたは試すことができます

print '<pre>';
print_r($variable);
print '</pre>';
0
wbase

特定のテストケースで私が抱えていた問題がexec呼び出しを実装し、その関数がすべての出力をキャプチャするという事実であったことを除いて、これらの回答はほとんどの状況で問題ありません。

私の場合、exec呼び出しを passthru に置き換えて、問題を解決しました。

0
DKinzer

2つの解決策を提案できます

1) watchdog を使用できます。

watchdog($type, $message);変数を次のようなカスタムタイプ名で配置します。

watchdog('drush_test_run', print_r($message));

2)ファイルを作成できますlog.txtとphpファイル関数を使用して変数を書き込みます。

0
milkovsky