直接使用 toHaveBeenCalledTimes 测试 setTimeout 调用次数。与老师视频不符
expect(setTimeout).toHaveBeenCalledTimes(1)
直接使用 toHaveBeenCalledTimes 测试 setTimeout 调用次数。与老师视频不符。
jest版本: "^27.2.5"
提示错误:
相关代码:
const fetchUser = (cb) => {
setTimeout(() => {
cb('hello')
}, 1000)
}
const loopFetchUser = (cb) => {
setTimeout(() => {
cb('one')
setTimeout(() => {
cb('two')
}, 2000)
}, 1000)
}
jest.useFakeTimers()
it('test the callback after 1 sec', () => {
const callback = jest.fn()
fetchUser(callback)
expect(callback).not.toHaveBeenCalled()
// control time
expect(setTimeout).toHaveBeenCalledTimes(1) // 这里
})
32
收起
正在回答 回答被采纳积分+1
1回答
张轩
2021-10-14 10:08:11
同学你好 经查 jest27 对 timers 有 breaking change,但是又没有更新文档。
改成 jest.useFakeTimers('legacy');
就可以了
亲测可用
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星