Jasmine-maven-plugin経由でJasmineを使用していますが、Mavenビルド出力にconsole.log()メッセージが表示されます。これを達成する方法はありますか?
Console.log()をリダイレクトできない場合、Mavenビルド出力に表示されるようにテストからログを記録する他の方法はありますか?
私はJenkinsでこれらのテストをヘッドレスで実行していますが、テストからデバッグ出力を取得する手段が欲しいです。
試して
console.info('foo')
テストJavaScriptから。
次を使用できます。
jasmine.log("I've got a big log.");
NB: douglas-treadwell's 以下のコメントを参照してください。
これはJasmine 1.xを指します。 Jasmine 2.0では、console.logを直接使用します。
ノードenvで実行している場合。使用できます
process.stdout.write( "これはコンソールに送信されます");
私はguard
とjasmine 2
を介してphantom js
を使用していますが、テスト内の標準のconsole.log
メッセージがジャスミン仕様ランナーのコンソールに正常に出力されることがわかりました。
また、テスト中のjavascriptコード要素内のconsole.log
メッセージはstdout
に書き込まれますが、テスト自体のconsole.log
メッセージには書き込まれないこともわかりました。
不可能だと思う。
仕様ローダーのconsole.log実装を上書きする必要がありました。つまり、(jQueryを使用):
var console = {
panel: $('body').append('<div>').css({position:'fixed', top:0, right:0,background:'transparent'}),
log: function(m){
this.panel.prepend('<div>'+m+'</div>');
}
};
console.log('message 1');
console.log('message 2');
ここ 機能的な例があります
ターミナルウィンドウでの出力が必要なため、テストが完了してブラウザが閉じた後にデータを確認できるようにする場合は、console.error()
がうまくいくようです。
Grunt/karma/jasmine(karma-jasmine 0.2.2)を使用して同じ問題に遭遇しました-
Dave Sagが言ったことに沿って、テストしているコードからのconsole.log
メッセージはすべて正常に実行されますが、describe() {}
およびit() {}
ブロックからは何も実行されないことがわかりました何でも記録します。
IdidbeforeEach() {}
ブロックからログに記録できることがわかりました。少なくともそれは私のために働いた:
beforeEach(function() {
this.model = new blahModel();
console.log('this.model = ', this.model);
});
これはブラウザコンソールにのみログを記録し、何らかの理由でコマンドラインにはログインしないことに注意してください。テストされたコードブロックのconsole.logステートメントがコマンドラインにログを記録すると、やや奇妙になります。また、一貫性のあるロギングのためのより良いアプローチと思われるものも見つけました here 。
更新:実際にログが機能しているのがブロックされているのを見ていますが、これを妨げる他のエラーがあったと思います。
1)pom.xmlがあるプロジェクトディレクトリに移動します。 cmdで次のコマンドを実行します。 mvn jasmine:bdd
2)localhost URL:localhost:8234(単なる例)を取得します。
3)このURLをブラウザーで実行します。これで、すべてのテストケースが実行されます。
4)このページのInspect要素を実行します。ブラウザコンソールで、すべてのconsole.log()またはconsole.error()トレースを確認できます。