QUnit异步测试停止功能不起作用

时间:2012-06-08 02:58:38

标签: javascript jquery iframe load qunit

我遇到了QUnit stop()的问题,基本上它似乎根本不起作用。以下是我正在尝试做的事情的示例:http://jsfiddle.net/7hZMM/1/

如果删除该行:

testIframe.remove();

它工作正常并运行测试并通过。

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

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

我不想把iframe删除放在一个回调中,因为我有一些这样的实例,并且如果我必须使每个相等的运行彼此,将导致回调地狱。

2 个答案:

答案 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加载事件。