我有一个上传模块,可以串行上传文件数组。只有在上一次上传完成后才能启动上传。
构建承诺链以实现此目的:
let chain = Promise.resolve();
files.forEach(file => {
chain = chain.then(() => upload(file)); // upload returns a promise
});
chain.then(() => console.log('Files uploaded'));
我想确保此链背靠背执行upload()
。我该怎么测试呢?
答案 0 :(得分:0)
从测试中返回链,摩卡将等待承诺解决。您可能希望插入某种间谍来计算调用次数,这可以在之后的整个链的then()中预期。您还需要在then处理程序中返回上传,让链等待promise解析,然后再调用下一步。
it('test chain', function () {
let chain = Promise.resolve();
files.forEach(file => {
chain = chain.then(() => return upload(file)); // upload returns a promise
});
return chain.then(() => console.log('Files uploaded'));
}