web-dev-qa-db-ja.com

console.log()の呼び出しをJasmineテストの標準出力にリダイレクトします

Jasmine-maven-plugin経由でJasmineを使用していますが、Mavenビルド出力にconsole.log()メッセージが表示されます。これを達成する方法はありますか?

Console.log()をリダイレクトできない場合、Mavenビルド出力に表示されるようにテストからログを記録する他の方法はありますか?

私はJenkinsでこれらのテストをヘッドレスで実行していますが、テストからデバッグ出力を取得する手段が欲しいです。

60

試して

console.info('foo')

テストJavaScriptから。

54
user1338062

次を使用できます。

jasmine.log("I've got a big log.");

NB: douglas-treadwell's 以下のコメントを参照してください。

これはJasmine 1.xを指します。 Jasmine 2.0では、console.logを直接使用します。

37
BanksySan

ノードenvで実行している場合。使用できます

process.stdout.write( "これはコンソールに送信されます");

11
Geoffrey Samper

私はguardjasmine 2を介してphantom jsを使用していますが、テスト内の標準のconsole.logメッセージがジャスミン仕様ランナーのコンソールに正常に出力されることがわかりました。

また、テスト中のjavascriptコード要素内のconsole.logメッセージはstdoutに書き込まれますが、テスト自体のconsole.logメッセージには書き込まれないこともわかりました。

3
Dave Sag

不可能だと思う

仕様ローダーの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');

ここ 機能的な例があります

3
Martin Borthiry

ターミナルウィンドウでの出力が必要なため、テストが完了してブラウザが閉じた後にデータを確認できるようにする場合は、console.error()がうまくいくようです。

3
Professor Tom

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

更新:実際にログが機能しているのがブロックされているのを見ていますが、これを妨げる他のエラーがあったと思います。

2
Skip Jack

1)pom.xmlがあるプロジェクトディレクトリに移動します。 cmdで次のコマンドを実行します。 mvn jasmine:bdd

2)localhost URL:localhost:8234(単なる例)を取得します。

3)このURLをブラウザーで実行します。これで、すべてのテストケースが実行されます。

4)このページのInspect要素を実行します。ブラウザコンソールで、すべてのconsole.log()またはconsole.error()トレースを確認できます。