Javascript 如何使用Sinon&;测试延迟后重试的函数;柴?
我有一个函数,如果失败,它会延迟再次调用自己Javascript 如何使用Sinon&;测试延迟后重试的函数;柴?,javascript,mocha.js,chai,sinon,proxyquire,Javascript,Mocha.js,Chai,Sinon,Proxyquire,我有一个函数,如果失败,它会延迟再次调用自己 async function getIp(retry=0) { try { return await http.get() } catch (e) { if (retry >= MAX_RETRIES) { throw e } await setTimeoutAsync(RETRY_INTERVAL) return await getIp(retry + 1)
async function getIp(retry=0) {
try {
return await http.get()
} catch (e) {
if (retry >= MAX_RETRIES) { throw e }
await setTimeoutAsync(RETRY_INTERVAL)
return await getIp(retry + 1)
}
}
测试功能存根如下所示:
let clock = sinon.useFakeTimers()
let tick = () => { clock.tick(501) }
const fakeClient = sinon.stub().onFirstCall().rejects().callsFake(tick)
.onSecondCall().rejects().callsFake(tick)
.onThirdCall().rejects().callsFake(tick)
.returns(testIp)
程序在第一个等待setTimeoutAsync时卡住(重试间隔)