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

Posted TEST_二 黑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端自动化测试框架Jest中的Mock相关的知识,希望对你有一定的参考价值。

众所周知,在前面的代码中,我们在编写一个测试用例的时候用到了 test、expect、toBe 三个方法,在之前我们也介绍了 Jest 的基础使用、Jest 的简单配置、 Jest 中的匹配器(matchers)、 Jest 命令行工具的使用和异步代码的测试、 Jest 中的钩子函数及作用域,今天我们来说说Jest中的Mock。

函数的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
);

以上是关于前端自动化测试框架Jest中的Mock的主要内容,如果未能解决你的问题,请参考以下文章

2w字的超级大文:自动化测试入门

前端测试框架Jest总结

入门前端自动化测试-jest-基础

web前端好帮手 - Jest单元测试工具

前端自动化测试框架 Jest 极简教程

jest中的mock,jest.fn()jest.spyOn()jest.mock()