我正在運行jasmine這樣的測試;檢測茉莉花測試是否完成
jasmine.getEnv().addReporter(new jasmine.TrivialReporter());
jasmine.getEnv().execute();
我想在檢測完成時使用JavaScript檢測。我怎麼能夠?
我正在運行jasmine這樣的測試;檢測茉莉花測試是否完成
jasmine.getEnv().addReporter(new jasmine.TrivialReporter());
jasmine.getEnv().execute();
我想在檢測完成時使用JavaScript檢測。我怎麼能夠?
我發現了兩種不同的方法來解決這個問題。一種是在完成時劈開茉莉花來拋出一個自定義事件。因爲我想屏幕刮試裝後,我插入事件觸發到茉莉花html.js在「reportRunnerResults」
$('body').trigger("jasmine:complete");
的末尾,則它偵聽該事件的問題:
$('body').bind("jasmine:complete", function(e) { ... }
在我的情況,我在一個iFrame正在運行茉莉,想要的結果傳遞給父窗口,所以我觸發父事件,從我第一次綁定:
$(window.parent).find('body').trigger("jasmine:complete");
這也是possibl e不用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);
一些替代方法:
A)使用ConsoleRunner
,接受一個onComplete
選項。舊版本(1.2rc1)作爲獨立參數接收完整回叫。
由於您還提供寫入功能(options.print
),因此您可以控制測試報告寫入控制檯。
你可以同時有幾個記者活躍jasmineEnv.addReporter()
。
B)沒有嘗試過,但你可以創建自己的記者,與每一個公共方法的空實現,但jasmineDone()
C)檢查舊post in the Jasmine google group,這裏筆者保存和覆蓋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();
添加自定義記者的作品! – 2015-06-02 18:21:30
我正在用HtmlReporter運行Jasmine 1.3.1。我結束了這樣的掛鉤:
var orig_done = jasmineEnv.currentRunner_.finishCallback;
jasmineEnv.currentRunner_.finishCallback = function() {
orig_done.call(this);
// custom code here
};
作爲@Xv。建議,增加記者將會工作。你可以做一些簡單的事情:
jasmine.getEnv().addReporter({
jasmineDone: function() {
// the specs have finished!
}
});
謝謝,這太棒了。我使用它在測試之後運行代碼,以便從堆棧跟蹤創建超鏈接返回到IntelliJ Idea。 – vaughan 2012-03-06 15:01:50