我正在使用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的人可以帮我弄清楚如何做到这一点我会非常感激 .
1 回答
Sinon spies为我完美地解决了这个问题 . 我做了一个我的方法的 Spy 来包装它,我所要做的就是检查
tryAtMostSpy.callCount
. 文档很容易:)