我有一个异步QUnit测试,如果操作超时,测试应该通过。 (我正在测试,如果你省略了可选的errorCallback
并做了一些可能会引发错误的事情,无论你等待多久都没有任何反应。)期待超时QUnit
我该怎么做?如果我使用Qunit.config.testTimeout
,那么测试将在超时时失败。我想设置一个超时,并在达到超时时测试成功。
我有一个异步QUnit测试,如果操作超时,测试应该通过。 (我正在测试,如果你省略了可选的errorCallback
并做了一些可能会引发错误的事情,无论你等待多久都没有任何反应。)期待超时QUnit
我该怎么做?如果我使用Qunit.config.testTimeout
,那么测试将在超时时失败。我想设置一个超时,并在达到超时时测试成功。
为什么不只是通过setTimeout
调用使测试成功?
如:
expect(1);
stop();
doOperation(function() {
start();
ok(false, "should not have come back");
});
setTimeout(function() {
start();
ok(true);
}, timeoutValue);
这是我在这种情况下怎么办(大约):
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
非常好!我使用了三个单独的异步测试,并在超时之前完成了3个超时的情况下清除超时。如果超时被触发,我做了一个start(n),其中n是尚未完成的异步回调的数量,以便一起移动测试。谢谢! – 2013-03-26 22:31:08