我使用 Promise
及 setTimeout
详情如下:
await new Promise((resolve) => setTimeout(resolve, 200))
我有一个函数调用此延迟:
const fn1 = async (v) => {
console.log(v)
}
const fn2 = async () => {
await fn1(1111111)
await new Promise((resolve) => setTimeout(resolve, 200))
await fn1(2222222)
}
然后我试着用 useFakeTimers
从…起 Sinon
模拟单元测试中的延迟( Mocha
):
const sinon = require('sinon')
describe('Test 1', () => {
it('Test 1.1', async () => {
const sb = sinon.createSandbox()
sb.useFakeTimers()
await fn2()
sb.clock.tick(500)
expect(1).to.equal(1)
sb.clock.restore()
})
})
我预料 sb.clock.tick(500)
模拟500毫秒的时间流逝,以保证延迟( await new Promise((resolve) => setTimeout(resolve, 200))
)会解决,, 2222222
会被打印出来,测试就会通过。
但是,我得到了以下错误:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
我不确定我的理解是否正确 useFakeTimers
这是错误的。。。
暂无答案!
目前还没有任何答案,快来回答吧!