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