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()
})

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