Jest模拟定时器

useFakeTimers模拟定时器执行,不用等待了

export const getDataCallback = fn => {
  setTimeout(() => {
    fn({name: 'callback'})
  }, 1000);
}

useFakeTimers

import { getDataCallback } from '../index'
jest.useFakeTimers()

it('测试回调函数', () => {
  // mock函数可以记录状态
  let fn = jest.fn()
  // 检查mock函数是否被调用了
  getDataCallback(fn)
  // 把所有的定时器执行
  jest.runAllTimers()
  // 这里判断是否调用
  expect(fn).toBeCalled()
})

对于setInterval一般会只进行一次调用

export const getDataCallback = fn => {
  setInterval(() => {
    fn({name: 'callback'})
  }, 1000);
}
import { getDataCallback } from '../index'
jest.useFakeTimers()

it('测试回调函数', () => {
  // mock函数可以记录状态
  let fn = jest.fn()
  // 检查mock函数是否被调用了
  getDataCallback(fn)
  // 把所有的定时器执行
  jest.runOnlyPendingTimers()
  // 这里判断是否调用
  expect(fn).toBeCalled()
})

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章