timers.enable([enableOptions])


启用指定定时器的定时器模拟。

【Enables timer mocking for the specified timers.】

  • enableOptions <Object> 可选的配置选项,用于启用计时器模拟。支持以下属性:
    • apis <Array> 一个可选数组,包含要模拟的计时器。目前支持的计时器值有 'setInterval''setTimeout''setImmediate''Date'默认值:['setInterval', 'setTimeout', 'setImmediate', 'Date']。如果未提供数组,则默认会模拟所有与时间相关的 API('setInterval''clearInterval''setTimeout''clearTimeout''setImmediate''clearImmediate''Date')。
    • now <number> | <Date> 一个可选的数字或 Date 对象,表示用作 Date.now() 值的初始时间(以毫秒为单位)。默认值: 0

注意: 当你为特定计时器启用模拟时,其关联的清除函数也会被隐式地模拟。

注意: 模拟 Date 会影响被模拟计时器的行为,因为它们使用相同的内部时钟。

不设置初始时间的示例用法:

【Example usage without setting initial time:】

import { mock } from 'node:test';
mock.timers.enable({ apis: ['setInterval'] });const { mock } = require('node:test');
mock.timers.enable({ apis: ['setInterval'] });

上面的示例启用了对 setInterval 定时器的模拟,并隐式模拟了 clearInterval 函数。只有来自 node:timersnode:timers/promisesglobalThissetIntervalclearInterval 函数会被模拟。

【The above example enables mocking for the setInterval timer and implicitly mocks the clearInterval function. Only the setInterval and clearInterval functions from node:timers, node:timers/promises, and globalThis will be mocked.】

设置初始时间的示例用法

【Example usage with initial time set】

import { mock } from 'node:test';
mock.timers.enable({ apis: ['Date'], now: 1000 });const { mock } = require('node:test');
mock.timers.enable({ apis: ['Date'], now: 1000 });

将初始 Date 对象设置为时间的示例用法

【Example usage with initial Date object as time set】

import { mock } from 'node:test';
mock.timers.enable({ apis: ['Date'], now: new Date() });const { mock } = require('node:test');
mock.timers.enable({ apis: ['Date'], now: new Date() });

或者,如果你在没有任何参数的情况下调用 mock.timers.enable()

【Alternatively, if you call mock.timers.enable() without any parameters:】

所有计时器('setInterval''clearInterval''setTimeout''clearTimeout''setImmediate''clearImmediate')都将被模拟。从 node:timersnode:timers/promisesglobalThis 导入的 setIntervalclearIntervalsetTimeoutclearTimeoutsetImmediateclearImmediate 函数也将被模拟。全局 Date 对象也会被模拟。

【All timers ('setInterval', 'clearInterval', 'setTimeout', 'clearTimeout', 'setImmediate', and 'clearImmediate') will be mocked. The setInterval, clearInterval, setTimeout, clearTimeout, setImmediate, and clearImmediate functions from node:timers, node:timers/promises, and globalThis will be mocked. As well as the global Date object.】