期待QUnit超时

时间:2012-01-13 06:56:27

标签: javascript testing qunit

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

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

2 个答案:

答案 0 :(得分:5)

为什么不进行setTimeout通话,让测试成功?

e.g:

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

答案 1 :(得分: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();
})

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