前端自动化测试框架Jest中的Mock

发表于:2022-6-29 09:36

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

 作者:三年没洗澡    来源:掘金

  函数的 Mock
  在我们的项目中,一个模块的方法内通常会去调用另外一个模块的方法。
  在测试时,我们可能并不需要关心方法内部的执行过程和结果,只想知道它是否被正确调用即可,此时,就需要用到Jest的使用Mock函数了。
  Mock 函数提供的以下三种特性,在我们写测试代码时十分有用:
  ·捕获函数调用情况
  · 设置函数返回值
  · 改变函数的内部实现
  测试函数是否被正常调用
  首先定义一个函数,用来执行传入的回调,然后导出:
// index.js

export const runCallback = callback => {
  callback();
};
  然后我们需要这样测试:
// index.test.js

import { runCallback } from "./index";

test("测试 runCallback", () => {
  const func = jest.fn(); // 生成 mock 函数,捕获函数的调用
  runCallback(func); // 调用 mock 函数
  expect(func).toBeCalled(); // toBeCalled 匹配器用来检查函数是否被调用过
});
  测试函数调用次数是否正确
  首先定义一个函数,用来执行传入的回调,然后导出:
// index.js

export const runCallback = callback => {
  callback();
};
  然后我们需要这样测试:
// index.test.js

import { runCallback } from "./index";

test("测试调用次数", () => {
  const func = jest.fn(); // 生成 mock 函数,捕获函数的调用
  runCallback(func); // 第一次调用 mock 函数
  runCallback(func); // 第二次调用 mock 函数
  runCallback(func); // 第三次调用 mock 函数
  expect(func.mock.calls.length).toBe(3); // 检查函数是否被调用了三次
});
  测试函数是否返回 undefined
  首先定义一个函数,用来执行传入的回调,然后导出:
// index.js

export const runCallback = callback => {
  callback();
};
  然后我们需要这样测试:
// index.test.js

import { runCallback } from "./index";

test("测试返回值", () => {
 const func = jest.fn(); // 生成 mock 函数,捕获函数的调用
  expect(runCallback(func)).toBeUndefined(); // 检查函数是否返回 undefined
});
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号