TA的每日心情 | 无聊 昨天 09:05 |
---|
签到天数: 1050 天 连续签到: 1 天 [LV.10]测试总司令
|
函数的 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
- });
复制代码
|
|