assert.async()
添加版本:1.16.0.
描述
async( count = 1 )
指示 QUnit 等待异步操作。
名称 | 描述 |
---|---|
count (数字) |
预期调用的次数。默认为 1 。 |
assert.async()
返回一个回调函数,并在回调函数被调用之前暂停测试处理。如果回调函数被调用的次数超过了所需的调用次数,则回调函数将抛出一个 Error
错误。
另请参阅
- 迁移指南 从 QUnit 1.x
stop()
和start()
。
示例
等待回调
告诉 QUnit 等待来自回调的 done()
调用。
function fetchDouble (num, callback) {
const double = num * 2;
callback(double);
}
QUnit.test('async example', assert => {
const done = assert.async();
fetchDouble(21, res => {
assert.strictEqual(res, 42, 'Result');
done();
});
});
等待多个回调
多次调用 assert.async()
来等待多个异步操作。每个 done
回调必须被精确地调用一次才能使测试通过。
QUnit.test('two async calls', assert => {
const done1 = assert.async();
const done2 = assert.async();
fetchDouble(3, res => {
assert.strictEqual(res, 6, 'double of 3');
done1();
});
fetchDouble(9, res => {
assert.strictEqual(res, 18, 'double of 9');
done2();
});
});
需要多次调用
count
参数可用于要求对同一回调进行多次调用。在下面的示例中,测试在恰好三次调用后通过。
function uploadBatch (batch, notify, complete) {
batch.forEach((item) => {
// Do something with item
notify();
});
complete(null);
}
QUnit.test('multiple calls example', assert => {
assert.timeout(1000);
const notify = assert.async(3);
const done = assert.async();
uploadBatch(
['a', 'b', 'c'],
notify,
(err) => {
assert.strictEqual(err, null, 'complete error parameter');
done();
}
);
});