fetchTokens
确实在推进时间时被调用了多次,因为我试图记录输出。
但是对fetchTokens
的监视并没有显示它被多次调用。
const tokens = await this.fetchTokens();
setInterval(() => {
this.fetchTokens();
}, 1000);
const fetchTokens() => {
console.log('nice')
}
Jest测试:
jest.advanceTimersByTime(60000);
const fetchTokens = jest.spyOn(service, 'fetchTokens');
await service.main();
expect(fetchTokens).toHaveBeenCalledTimes(1);
我可以猜到间谍不能窥探setInterval
内部的调用,那么我如何才能实现这一点呢?
1条答案
按热度按时间xzv2uavs1#
只要
setInterval
依赖于真实的,就应该使用假计时器来正确地模拟内部函数。假计时器将用一个从假时钟获取时间的实现来替换
setInterval()
。Reference
比如: