【发布时间】:2016-11-22 21:00:17
【问题描述】:
假设我有一个组件,它呈现一个简单的 div,其中包含一个从 0 开始并每秒递增 1 的整数。所以 5 秒后,组件应该呈现“5”,30 秒后,它应该呈现“30”,依此类推。如果我想测试这个组件并确保它在 5 秒后呈现应有的效果,我可能会写这样的东西。
it('should render <5> after 5 seconds', () => {
const time = mount(<Timer/>)
setTimeout(() => {
expect(time.text()).toEqual('5')
}, 5000)
})
但是,这不起作用,因为测试从不实际运行期望,并且不管任何事情都返回通过。即使它确实有效,使用这样的超时也会非常低效,因为测试必须等待 5 秒。如果我想模拟更多的时间怎么办?经过一番搜索,我发现 jest 实际上有一个 timer mock 但我似乎无法弄清楚如何在这种情况下实现它。任何帮助将不胜感激。谢谢!
【问题讨论】:
-
可以分享一下使用定时器的模块代码吗?
标签: javascript unit-testing reactjs jestjs enzyme