web-dev-qa-db-ja.com

ジャスミンテスト結果をコンソールに出力する


FirefoxアドオンでJasmine(JavaScript用BDDテストフレームワーク)を使用して、コードの機能をテストしています。

問題は、ジャスミンがテスト結果をHTMLファイルに出力していることです。Firebugコンソールまたは他のソリューションで結果を出力する必要があります。

39
Yosi

ConsoleRepoter を試しましたか

jasmine.getEnv().addReporter(new jasmine.ConsoleReporter(console.log));

コードによると、Jasmineには、必要な処理を行う印刷機能(この場合はconsole.log)を実行するConsoleReporterクラスがあります。

他のすべてが失敗した場合は、これを出発点として使用して、独自のconsole.logレポーターを実装できます。

29
Tigraine

最新の Jasmine(2.0)のバージョン では、コンソールにテスト出力を取得する場合は、次の行を追加する必要があります。

var ConsoleReporter = jasmineRequire.ConsoleReporter();
var options = {
   timer: new jasmine.Timer, 
   print: function () {
      console.log.apply(console,arguments)
}};
consoleReporter = new ConsoleReporter(options); // initialize ConsoleReporter
jasmine.getEnv().addReporter(consoleReporter); //add reporter to execution environment

ただし、htmlへの出力はデフォルトで含まれているため、html出力がまったく必要ない場合は、boot.jsファイルを編集し、そこから関連する行を削除する必要があります。コンソール編集ファイルconsole.jsでの出力の表示方法をカスタマイズする場合。 ソース

15
Pawel Miech

jasmineRequire.ConsoleReporterは2.3.0には存在しなかったため、次のコードを使用しました。

//create a console.log reporter
var MyReporter = function(){jasmineRequire.JsApiReporter.apply(this,arguments);};
MyReporter.prototype = jasmineRequire.JsApiReporter.prototype;
MyReporter.prototype.constructor = MyReporter;
MyReporter.prototype.specDone=function(o){
    o=o||{};
    if(o.status!=="passed"){
      console.warn("Failed:" + o.fullName + o.failedExpectations[0].message);
    }
};
var env = jasmine.getEnv();
env.addReporter(new MyReporter());
5
HMR

完全を期すために、完全な構成を次に示します。

まず、npm installコマンド:

npm install jasmine-console-reporter --save-dev

次に、Jasmineの設定をチェックして、そこにヘルパーが設定されていることを確認します。

spec/support/jasmine.json

{
    "spec_dir": "spec",
    "spec_files": [
        "**/*[sS]pec.js"
    ],
    "helpers": [
        "helpers/**/*.js"
    ],
    "stopSpecOnExpectationFailure": false,
    "random": false
}

ヘルパーは仕様の前に実行されるため、あなたがしなければならない唯一のことは、コンソールレポーターヘルパーを作成することです。

spec/helpers/reporter/consoleReporter.js

const JasmineConsoleReporter = require('jasmine-console-reporter');

let consoleReporter = new JasmineConsoleReporter({
    colors: 1,           // (0|false)|(1|true)|2
    cleanStack: 1,       // (0|false)|(1|true)|2|3
    verbosity: 4,        // (0|false)|1|2|(3|true)|4
    listStyle: 'indent', // "flat"|"indent"
    activity: false
});

jasmine.getEnv().addReporter(consoleReporter);
3