七、定时器测试
jest.useFakeTimers(); // 下面的定时器使用jestmock的 beforeeach(() => { jest.useFakeTimers(); // 这样调用可以解决多个定时器测试问题 }) test('timer 测试', (done) => { const fn = jest.fn(); timer(fn); jest.runAllTimers(); // 马上执行不需要等定时器(所有的都执行) jest.runOnlyPendingTimers(); // 只执行队列中的一个(用来解决多个定时器嵌套) jest.advanceTimersByTime(3000); // 快进3s执行 快进时间 expect(fn).toHaveBeenCalledTimes(1) // 是否调用一次回调函数 }) |
八、类的测试
import Util from './util'; const util = null; beforeAll(() => { utiil = new Util(); }) test('测试 a 方法', () => { expoect(util.a(1,2)).toBe('12'); }) |
jset.mock('./util', () => { const Until = jest.fn(() => { console.log('constructor') }); Until.prototype.a = jest.fn(() => { console.log(a) }) Until.prototype.b = jest.fn(() => { console.log(b) }) return Until; }; import Util from './util'; import demoFunction from './demo'; test('测试 demoFunction 方法', () => { demoFunction(); expoect(util).toHaveBeenCalled(); expoect(util.mock.instances[0].a).toHaveBeenCalled(); // 是否调用了util 类中的a方法 expoect(util.mock.instances[0].b).toHaveBeenCalled(); // 是否调用了util 类中的b方法 }) |
九、dom节点操作
jest 自己模拟了dom 的api
import addDivToBody from './demo'; import $ from 'jquery'; test("测试 addDivToBody", () => { addDivToBody(); addDivToBody(); expect($('body').find('div').length).toBe(2); }) |
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理