当你的代码中设置了很长的定时器(timeout),而你又不想在测试中等待它们时,fake timers 会非常有用。
Rstest 提供了一些实用函数,基于 @sinonjs/fake-timers 实现定时器的模拟。
(config?: FakeTimerInstallOpts) => Rstest
调用此方法可以启用定时器的模拟。底层使用 @sinonjs/fake-timers。
你也可以传递配置对象以自定义 fake timers 的行为。
() => Rstest
恢复原生的定时器函数(如 setTimeout
、setInterval
等),关闭 fake timers。
() => boolean
如果当前启用了 fake timers,则返回 true
,否则返回 false
。
(now?: number | Date) => Rstest
设置 fake timers 使用的当前系统时间。适用于需要测试依赖当前日期或时间的代码。
() => number
即使在启用 fake timers 时,也可以返回真实系统时间(时间戳)。
() => Rstest
运行所有已排队的微任务(如 process.nextTick
)。
() => Rstest
执行所有待运行的定时器(包括 timeout 和 interval)。
() => Promise<Rstest>
异步执行所有待运行的定时器。
() => Rstest
只运行当前待运行的定时器(不会调度新的定时器)。
() => Promise<Rstest>
异步只运行当前待运行的定时器。
(ms: number) => Rstest
将 fake timers 快进指定的毫秒数,并执行在此期间计划的所有定时器。
(ms: number) => Promise<Rstest>
异步快进 fake timers 指定的毫秒数。
(steps?: number) => Rstest
将定时器推进到下一个计划的定时器,可选地指定推进的步数。
(steps?: number) => Promise<Rstest>
异步将定时器推进到下一个计划的定时器。
() => Rstest
将定时器推进到下一个动画帧。
() => number
返回当前 fake timers 中还剩多少个待运行的定时器。
() => Rstest
移除所有已计划但尚未执行的定时器。