Javascript QUnit异步测试停止功能isn';行不通

Javascript QUnit异步测试停止功能isn';行不通,javascript,jquery,iframe,load,qunit,Javascript,Jquery,Iframe,Load,Qunit,我对QUnit stop()有个问题,基本上它根本不起作用。下面是我正在尝试做的事情的一个例子: 如果删除该行: testIframe.remove(); 它工作正常,运行测试并通过 我假设调用stop()会停止测试执行(正如文档所说的那样),但情况似乎并非如此,因为在加载回调完成之前调用了remove() 如何确保在从页面中删除iframe之前运行测试 我不想将iframe remove放在回调中,因为我有几个这样的实例,如果我必须使每个实例彼此相等,那么会导致回调地狱 您可以尝试在拆除模块

我对QUnit stop()有个问题,基本上它根本不起作用。下面是我正在尝试做的事情的一个例子:

如果删除该行:

testIframe.remove();
它工作正常,运行测试并通过

我假设调用stop()会停止测试执行(正如文档所说的那样),但情况似乎并非如此,因为在加载回调完成之前调用了remove()

如何确保在从页面中删除iframe之前运行测试


我不想将iframe remove放在回调中,因为我有几个这样的实例,如果我必须使每个实例彼此相等,那么会导致回调地狱

您可以尝试在拆除模块时进行拆除。这将等待调用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.module(“新测试”{
设置:函数(){
var testIframe=$('').appendTo(“正文”);
testIframe.load(函数(){
log('done loading iframe');
});                              
},
拆卸:函数(){
testisframe.remove();
}
});

QUnit.stop只告诉QUnit在检查结果之前等待这么多毫秒。此外,如果iframe没有有效的src,则可能不会触发iframe加载事件。

这在文档中不清楚,但
stop()
只确保在调用
start()
之前不会启动测试的拆卸。在调用
stop()
之后,它不会以任何方式延迟当前测试用例中的语句

您的问题的正确答案由jhorback提供;将拆卸件放入拆卸中