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:timers、node:timers/promises 和 globalThis 的 setInterval 和 clearInterval 函数会被模拟。
【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:timers、node:timers/promises 和 globalThis 导入的 setInterval、clearInterval、setTimeout、clearTimeout、setImmediate 和 clearImmediate 函数也将被模拟。全局 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.】