我正在运行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