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.done
onConsoleMessage
私の質問は、単体テストの実行がいつ終了したかを知るためのより良い方法はありますか?