【发布时间】:2018-07-08 14:28:44
【问题描述】:
我正在使用 Mocha/Sinon 编写测试,以确保我创建的 async tryAtMost 函数正在调用 Promise 并且仅重试该承诺 X 次数。
我的tryAtMost 函数如下所示:
async tryAtMost(options, promise, maxRetries, retryInterval = 0) {
return new Promise(async (resolve, reject) => {
try {
const res = await promise(options);
if (res.statusCode == 200) {
return resolve(res);
} else {
if (maxRetries > 0) {
setTimeout(async () => {
return await this.tryAtMost(options, promise, maxRetries - 1, retryInterval);
}, retryInterval);
} else {
return reject('Ran out of retries, failing.');
}
}
} catch (err) {
return reject(err);
}
});
}
我的 Mocha 测试为我的 promise 库创建了一个存根,我可以强制它返回我想要的任何状态代码。但是,我希望我的测试能够验证 tryAtMost 仅被调用 maxRetries + 1 次数。如果更熟悉 Mocha/Sinon 的人可以帮助我弄清楚如何做到这一点,我将不胜感激。
【问题讨论】:
标签: node.js promise async-await mocha.js sinon