SimpleTestsでテストするとき、変数を検査したいと思います。 var_dump()
などはDrushの出力にレンダリングされません。シミュレートされたブラウザーがDrupalWebTest
で実行されているため、Xdebugインタラクティブデバッガーは機能しません。
コード内の変数の内容をレンダリング、エクスポート、検査、またはダンプする方法を教えてください。つまりdpm()
、var_export()
などのDrupalWebTest
など。
Troubleshooting Tests のドキュメントには多くの洞察があります:
debug()
in Drupal 7.を使用します。これはテスト中に機能し、テスト結果に出力を表示します。$this->pass(var_export($var, TRUE));
などを使用)。少々厄介ですが、他に何もしなくても機能します。呼び出す 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);
}
print_r($variable)
を試しましたか?人間に優しい出力のために、あなたは試すことができます
print '<pre>';
print_r($variable);
print '</pre>';
特定のテストケースで私が抱えていた問題がexec
呼び出しを実装し、その関数がすべての出力をキャプチャするという事実であったことを除いて、これらの回答はほとんどの状況で問題ありません。
私の場合、exec
呼び出しを passthru
に置き換えて、問題を解決しました。
2つの解決策を提案できます
1) watchdog を使用できます。
watchdog($type, $message);
変数を次のようなカスタムタイプ名で配置します。
watchdog('drush_test_run', print_r($message));
2)ファイルを作成できますlog.txt
とphpファイル関数を使用して変数を書き込みます。