close
logo
Rstest
指南
配置
API
English
简体中文
指南
配置
API
English
简体中文
logo
Rstest
Overview

Test API

Expect
Test
Describe
Hooks

Rstest Utility

Mock modules
Mock functions
MockInstance
Fake timers
Utilities
📝 在 GitHub 上编辑此页
上一页MockInstance
下一页Utilities

#Fake timers

当你的代码中设置了很长的定时器(timeout),而你又不想在测试中等待它们时,fake timers 会非常有用。

Rstest 提供了一些实用函数,基于 @sinonjs/fake-timers 实现定时器的模拟。

#rstest.useFakeTimers

  • 别名: rs.useFakeTimers
  • 类型: (config?: FakeTimerInstallOpts) => Rstest

调用此方法可以启用定时器的模拟。底层使用 @sinonjs/fake-timers。

rstest.useFakeTimers();

你也可以传递配置对象以自定义 fake timers 的行为。

#rstest.useRealTimers

  • 别名: rs.useRealTimers
  • 类型: () => Rstest

恢复原生的定时器函数(如 setTimeout、setInterval 等),关闭 fake timers。

rstest.useRealTimers();

#rstest.isFakeTimers

  • 别名: rs.isFakeTimers
  • 类型: () => boolean

如果当前启用了 fake timers,则返回 true,否则返回 false。

if (rstest.isFakeTimers()) {
  // Fake timers 已启用
}

#rstest.setSystemTime

  • 别名: rs.setSystemTime
  • 类型: (now?: number | Date) => Rstest

设置 fake timers 使用的当前系统时间。适用于需要测试依赖当前日期或时间的代码。

rstest.useFakeTimers();
rstest.setSystemTime(new Date('2020-01-01T00:00:00Z'));

#rstest.getRealSystemTime

  • 别名: rs.getRealSystemTime
  • 类型: () => number

即使在启用 fake timers 时,也可以返回真实系统时间(时间戳)。

const realTime = rstest.getRealSystemTime();

#rstest.runAllTicks

  • 别名: rs.runAllTicks
  • 类型: () => Rstest

运行所有已排队的微任务(如 process.nextTick)。

#rstest.runAllTimers

  • 别名: rs.runAllTimers
  • 类型: () => Rstest

执行所有待运行的定时器(包括 timeout 和 interval)。

#rstest.runAllTimersAsync

  • 别名: rs.runAllTimersAsync
  • 类型: () => Promise<Rstest>

异步执行所有待运行的定时器。

#rstest.runOnlyPendingTimers

  • 别名: rs.runOnlyPendingTimers
  • 类型: () => Rstest

只运行当前待运行的定时器(不会调度新的定时器)。

#rstest.runOnlyPendingTimersAsync

  • 别名: rs.runOnlyPendingTimersAsync
  • 类型: () => Promise<Rstest>

异步只运行当前待运行的定时器。

#rstest.advanceTimersByTime

  • 别名: rs.advanceTimersByTime
  • 类型: (ms: number) => Rstest

将 fake timers 快进指定的毫秒数,并执行在此期间计划的所有定时器。

#rstest.advanceTimersByTimeAsync

  • 别名: rs.advanceTimersByTimeAsync
  • 类型: (ms: number) => Promise<Rstest>

异步快进 fake timers 指定的毫秒数。

#rstest.advanceTimersToNextTimer

  • 别名: rs.advanceTimersToNextTimer
  • 类型: (steps?: number) => Rstest

将定时器推进到下一个计划的定时器,可选地指定推进的步数。

#rstest.advanceTimersToNextTimerAsync

  • 别名: rs.advanceTimersToNextTimerAsync
  • 类型: (steps?: number) => Promise<Rstest>

异步将定时器推进到下一个计划的定时器。

#rstest.advanceTimersToNextFrame

  • 别名: rs.advanceTimersToNextFrame
  • 类型: () => Rstest

将定时器推进到下一个动画帧。

#rstest.getTimerCount

  • 别名: rs.getTimerCount
  • 类型: () => number

返回当前 fake timers 中还剩多少个待运行的定时器。

const count = rstest.getTimerCount();

#rstest.clearAllTimers

  • 别名: rs.clearAllTimers
  • 类型: () => Rstest

移除所有已计划但尚未执行的定时器。

rstest.clearAllTimers();