0

PhantomJSを使用して、Ant ビルド スクリプトから一連の非同期 QUnit テストを実行しようとしています。私が持っているものは機能しているようですが、それを達成するためのより良い方法があるはずです。

PhantomJS のロード時に実行されるスクリプト (簡略化) は次のとおりです。

var page = require("webpage").create();

page.onConsoleMessage = function(msg) {
    if(msg.indexOf("FINISHED") > -1) {
        var failed = msg.split(" ");
        phantom.exit(failed[1]);
    }
};

page.open("testrunner.html", function() {
    page.evaluate(function() {
        QUnit.done = function(result) {
            console.log("FINISHED " + result.failed);
        };
    });
});

これにより、テストを含むファイルがロードされます ( testrunner.html)。PhantomJSevaluateメソッドを使用して、読み込まれたページのコンテキストでコードを実行します。そのコードは、イベント ハンドラーを QUnitdoneイベントにバインドします。イベント ハンドラでは、単に を呼び出すだけconsole.logです。

PhantomJS はデフォルトでは呼び出しに対して何もしないconsole.logので、イベント ハンドラーも PhantomJSonConsoleMessageイベントにバインドしました。イベント ハンドラーのconsole.log呼び出しが実行されると、イベントがトリガーされます。コンソール メッセージが特定の文字列と一致する場合、テストの実行が終了したことがわかります。次に、失敗した単体テストの数に等しい終了コードで PhantomJS を終了できます (これは、ビルドのこの部分が成功したかどうかを判断するために Ant スクリプトによって使用されます)。QUnit.doneonConsoleMessage

私の質問は、単体テストの実行がいつ終了したかを知るためのより良い方法はありますか?

4

1 に答える 1

0

ファントム js ウェブサイトで提供されている qunit ランナーを確認しましたか? https://github.com/ariya/phantomjs/blob/1.2/examples/run-qunit.js

基本的に、それを qunit テスト ページ (testrunner.html) にポイントするだけで、ページをスクレイピングして何かが失敗したかどうかを確認し、結果をコンソールに出力します。ファイルに出力するように変更して、ビルド スクリプトに統合することができます。

于 2012-03-01T22:29:13.457 に答える