光说不练假把式,论jest测试的具体方法(三)

发表于:2020-12-08 09:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:用户9594257519230    来源:掘金

  七、定时器测试

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),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号