2

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

如果删除该行:

testIframe.remove();

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

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

我可以做些什么来确保在 iframe 从页面中删除之前运行测试?

我不想将 iframe 删除放在回调中,因为我有几个这样的实例,如果我必须让每个平等的人互相跑掉,就会导致回调地狱。

4

2 回答 2

2

这在文档中并不清楚,但只是确保在调用stop()之前不会开始测试的拆卸。start()它不会以任何方式推迟调用stop().

您的问题的正确答案是 jhorback 提供的;将拆卸放入拆解中。

于 2014-03-20T20:29:25.367 回答
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 加载事件。

于 2012-07-02T20:05:20.930 回答