我遇到了QUnit stop()的问题,基本上它似乎根本不起作用。以下是我正在尝试做的事情的示例:http://jsfiddle.net/7hZMM/1/
如果删除该行:
testIframe.remove();
它工作正常并运行测试并通过。
我假设调用stop()会暂停测试执行(正如文档所说的那样),但似乎并非如此,因为在加载回调完成之前调用了remove()。
如何确保在从页面中删除iframe之前运行测试?
我不想把iframe删除放在一个回调中,因为我有一些这样的实例,并且如果我必须使每个相等的运行彼此,将导致回调地狱。
答案 0 :(得分:2)
这在文档中并不明确,但stop()
只是确保在调用start()
之前不会启动测试拆解。在调用stop()
之后,它不会以任何方式推迟当前测试用例中的语句。
你的问题的正确答案是由jhorback提供的答案;把拆迁放在拆解中。
答案 1 :(得分:0)
您可以尝试将删除功能放入模块的拆解中。这将等到调用start()方法并完成文本执行。
QUnit.module("new test", {
setup: function () {
var testIframe = $('<iframe id="testiframe" src="/" />').appendTo("body");
testIframe.load(function() {
console.log('done loading iframe');
});
},
teardown: function () {
testIframe.remove();
}
});
QUnit.stop只告诉QUnit在检查结果之前等待这么多毫秒。此外,如果iframe没有有效的src,则可能无法触发iframe加载事件。