我有一個異步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