2012-01-13 77 views
4

我有一个异步QUnit测试,如果操作超时,测试应该通过。 (我正在测试,如果你省略了可选的errorCallback并做了一些可能会引发错误的事情,无论你等待多久都没有任何反应。)期待超时QUnit

我该怎么做?如果我使用Qunit.config.testTimeout,那么测试将在超时时失败。我想设置一个超时,并在达到超时时测试成功。

回答

5

为什么不只是通过setTimeout调用使测试成功?

如:

expect(1); 
stop(); 
doOperation(function() { 
    start(); 
    ok(false, "should not have come back"); 
}); 
setTimeout(function() { 
    start(); 
    ok(true); 
}, timeoutValue); 
+0

非常好!我使用了三个单独的异步测试,并在超时之前完成了3个超时的情况下清除超时。如果超时被触发,我做了一个start(n),其中n是尚未完成的异步回调的数量,以便一起移动测试。谢谢! – 2013-03-26 22:31:08

0

这是我在这种情况下怎么办(大约):

function timeout(assert,to,error){ 
    var done = assert.async(); 
    var a = setTimeout(function(){ 
    assert.equal(to,undefined,error); 
    done(); 
    },to); 
    return function(){ 
    done(); 
    clearTimeout(a); 
    }; 
} 

那么你可以:

... 
var done = timeout(assert,2000,"not joined"); 
r.join(function(data){ 
    assert.ok(true,"join confirmed"); 
    done(); 
}) 

您可以agument timeout功能timeout(assert,to,toCB)并执行toCB而不是我的假人assert.equal