2009-10-28 2 views
17

ActiveSupport :: TestCaseテスト実行時に、putsやprintなどのコマンドがコンソールに表示されないのはなぜですか?Railsユニットテストでの出力(puts、print)

2つの方法で検査を出力できない場合は、デバッグが非常に難しくなります。

ありがとうございます!結果を確認する(別のターミナルタブまたはウィンドウで、プロジェクトのルートからの)コマンドラインで

Rails::logger.debug "Interesting stuff" 

実行tail -f log/test.log

答えて

22

はあなたの出力を確認するために、レールロガーを使用することができます。

+0

うんための非常に速いが、魅力のように働きました! – Alexandre

+2

rake 3では、rake-traceでテストを実行するとputsの出力を見ることができます –

+0

Hmm ..これらはいずれもRails 3、通常のrubyテスト、またはsporkで動作しません。 – Trip

3

私はすぐに1回のテストのデバッグをハッキングするときに、テストにputsを使用します。ですから、私はrake test:*を使用せず、個々のテストを実行し、出力が表示されます。

ruby -Itest test/unit/user/context_test.rb 
6

私は今、このアンダーライン(3.2)で苦労しています。バージョン間で物事がどのように変わったのか分かりませんが、答えは実際に質問に答えません。むしろ

$stdout.puts msg 

を個別のテストを実行するときに他のコンソールメッセージと共にコンソールに出力します。

+0

は、レール2.0.2で動作します(上の回答はありません) –

+0

より簡単な答えです。 ** Rails 4.0.13 **で動作します。 – RousseauAlexandre

0

例えば、次のようにあなたは、個々のテストでプットを使用することができます。

puts "\n\n #{@object.name}" 

テストが

E ... EEEスタートを実行すると、あなたのターミナルウィンドウで、次のようにこれは次のようになります

英国.E

仕上がりは2.787886秒です。 (この場合は@object.name == "United Kingdom"

それはかなりの粗方法がありますが、簡単なデバッグ

関連する問題