如何对生成的承诺链进行单元测试

时间:2016-03-23 14:25:00

标签: javascript promise mocha sinon

我有一个上传模块,可以串行上传文件数组。只有在上一次上传完成后才能启动上传。

构建承诺链以实现此目的:

let chain = Promise.resolve();

files.forEach(file => {
  chain = chain.then(() => upload(file)); // upload returns a promise
});

chain.then(() => console.log('Files uploaded'));

我想确保此链背靠背执行upload()。我该怎么测试呢?

1 个答案:

答案 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'));
}