跳至主要内容

时钟

准确模拟时间相关行为对于验证应用程序的正确性至关重要。 了解更多关于 时钟模拟.

请注意,时钟是为整个 浏览器上下文 安装的,因此所有页面和 iframe 中的时间都受同一个时钟控制。


方法

fastForward

添加于: v1.45 clock.fastForward

通过在时间上向前跳跃来推进时钟。 由于计时器最多只触发一次。 这相当于用户关闭笔记本电脑盖子一段时间,并在给定时间后重新打开它。

用法

page.clock().fastForward(1000);
page.clock().fastForward("30:00");

参数

  • ticks long | String#

    时间可以是推进时钟的毫秒数,也可以是人类可读的字符串。 有效的字符串格式为 "08" 代表八秒,"01:00" 代表一分钟,"02:34:10" 代表两小时 34 分钟 10 秒。

返回值


install

添加于: v1.45 clock.install

为以下与时间相关的函数安装虚假实现

  • 日期
  • setTimeout
  • clearTimeout
  • setInterval
  • clearInterval
  • requestAnimationFrame
  • cancelAnimationFrame
  • requestIdleCallback
  • cancelIdleCallback
  • 性能

虚假计时器用于在测试中手动控制时间流。 它们允许您推进时间、触发计时器和控制时间相关函数的行为。 查看 Clock.runFor()Clock.fastForward() 以获取更多信息。

用法

Clock.install();
Clock.install(options);

参数

  • options Clock.InstallOptions (可选)
    • setTime long | String | Date (可选)#

      初始化的时间,默认情况下为当前系统时间。

返回值


pauseAt

添加于: v1.45 clock.pauseAt

通过在时间上向前跳跃来推进时钟并暂停时间。 一旦调用此方法,除非调用 Clock.runFor()Clock.fastForward()Clock.pauseAt()Clock.resume(),否则不会触发任何计时器。

由于计时器最多只触发一次。 这相当于用户关闭笔记本电脑盖子一段时间,并在指定时间重新打开它并暂停。

用法

SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd");
page.clock().pauseAt(format.parse("2020-02-02"));
page.clock().pauseAt("2020-02-02");

参数

返回值


resume

添加于: v1.45 clock.resume

恢复计时器。 一旦调用此方法,时间就会恢复流动,计时器将照常触发。

用法

Clock.resume();

返回值


runFor

添加于: v1.45 clock.runFor

推进时钟,触发所有与时间相关的回调。

用法

page.clock().runFor(1000);
page.clock().runFor("30:00");

参数

  • ticks long | String#

    时间可以是推进时钟的毫秒数,也可以是人类可读的字符串。 有效的字符串格式为 "08" 代表八秒,"01:00" 代表一分钟,"02:34:10" 代表两小时 34 分钟 10 秒。

返回值


setFixedTime

添加于: v1.45 clock.setFixedTime

使 Date.nownew Date() 始终返回固定的虚假时间,并保持所有计时器运行。

用法

page.clock().setFixedTime(new Date());
page.clock().setFixedTime(new SimpleDateFormat("yyy-MM-dd").parse("2020-02-02"));
page.clock().setFixedTime("2020-02-02");

参数

返回值


setSystemTime

添加于: v1.45 clock.setSystemTime

设置当前系统时间,但不触发任何计时器。

用法

page.clock().setSystemTime(new Date());
page.clock().setSystemTime(new SimpleDateFormat("yyy-MM-dd").parse("2020-02-02"));
page.clock().setSystemTime("2020-02-02");

参数

返回值