我正在使用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版本。
答案 0 :(得分:2)
<强>更新强>
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 );
});