10

私はこのようなジャスミンテストを実行しています。

   jasmine.getEnv().addReporter(new jasmine.TrivialReporter());
   jasmine.getEnv().execute();

テストが完了したときに、JavaScriptを使用して検出したいと思います。どうやって?

4

4 に答える 4

6

@Xvとして。は、レポーターの追加が機能することを示唆しています。あなたは次のような簡単なことをすることができます:

jasmine.getEnv().addReporter({
    jasmineDone: function () {
        // the specs have finished!
    }
});

http://jasmine.github.io/2.2/custom_reporter.htmlを参照してください。

于 2015-06-02T17:40:42.497 に答える
5

いくつかの代替方法:

A)ConsoleRunnerオプションを受け入れるを使用しonCompleteます。古いバージョン(1.2rc1)は、スタンドアロンパラメーターとして完全なコールバックを受け取ります。

()を書き込む関数も提供するoptions.printため、テストレポートをコンソールに書き込むことを制御できます。

複数のレポーターを同時にアクティブにすることができますjasmineEnv.addReporter()

B)試したことはありませんが、すべてのパブリックメソッドの実装を空にして、独自のレポーターを作成できますが、jasmineDone()

C) Jasmine googleグループの古い投稿を確認します。ここで、作成者は保存して上書きしますjasmine.getEnv().currentRunner().finishCallback

    var oldCallback = jasmineEnv.currentRunner().finishCallback;
    jasmineEnv.currentRunner().finishCallback = function () {
        oldCallback.apply(this, arguments);
        $("body").append( "<div id='_test_complete_signal_'></div" );   
    };
    jasmineEnv.execute();
于 2013-07-10T05:57:55.493 に答える
4

この問題を解決する2つの異なる方法を見つけました。1つは、ジャスミンをハックして、完了時にカスタムイベントをスローすることです。テストが読み込まれた後にスクレイピングをスクリーニングしたかったので、「reportRunnerResults」の最後にあるjasmine-html.jsにイベントトリガーを挿入しました

$( 'body' ).trigger( "jasmine:complete" );

次に、イベントをリッスンする必要があります。

$( 'body' ).bind("jasmine:complete", function(e) { ... }

私の場合、iFrameでjasmineを実行していて、結果を親ウィンドウに渡したいので、最初のバインドから親でイベントをトリガーします。

$(window.parent).find('body').trigger("jasmine:complete");

jqueryなしでこれを行うことも可能です。私の戦略は、「終了」スパンに追加されるテキストをポーリングすることでした。この例では、0.5秒ごとに8秒間ポーリングします。

var counter = 0;

function checkdone() {
    if ( $('#test-frame' ).contents().find('span.finished-at').text().length > 0) {
        ...
        clearInterval(timer);
    } else {
        counter += 500;
        if (counter > 8000) {
            ...
            clearInterval(timer);
        }
    }
}

var timer = setInterval( "checkdone()", 500 );
于 2011-05-13T12:56:48.513 に答える
1

HtmlReporterを使用してJasmine1.3.1を実行しています。私はこのように引っ掛かることになりました:

var orig_done = jasmineEnv.currentRunner_.finishCallback;
jasmineEnv.currentRunner_.finishCallback = function() {
    orig_done.call(this);
    // custom code here
};
于 2013-12-02T02:57:57.317 に答える