我正在使用QUnit测试一个javascript库,并且需要验证一次回调多次被调用。根据QUnit文档(在http://api.qunitjs.com/async/处),类似此简化测试用例的东西应该可以工作:
QUnit.test("assert.async with argument", function (assert) {
var done = assert.async(3);
done();
done();
done();
});
但是,上面引发了异常
Called the callback returned from assert.async more than once
。我不得不求助于构建一个done()函数数组,然后弹出每个函数并调用它。不太好
更新资料
将QUnit升级到2.0.1时,上面的代码将起作用(对发出0个断言的投诉进行模化)。我一直在使用1.18版。
最佳答案
更新
OP在下面评论,他只需要升级QUnit!
...
我有一个JS fiddle,在这里您可以看到此异步工作(使用setTimeout
)和不使用它(您的示例)。
这是一个使用setTimeout
的示例(无论如何适用于QUnit 2.0.1):
QUnit.test( "multiple call done()", function( assert ) {
var done = assert.async( 2 );
setTimeout(function() {
assert.ok( true, "first call done." );
done();
}, 500 );
setTimeout(function() {
assert.ok( true, "second call done." );
done();
}, 500 );
});
关于javascript - 多次调用QUnit的assert.async函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39186959/