多次调用 QUnit 的 assert.async 函数
Calling QUnit's assert.async function multiple times
我正在使用 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 );
});
我正在使用 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.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 );
});