jest 入门(二) mock fn函数使用

目标 :

介绍 jest mock

介绍 jest mock 常用函数Fn()

编写案例

什么是 mock , 为什要使用 mock

在单元测试中 ,我们一般对代码进行最小单元的测试 , 并不会关心模块/业务之间的耦合 , 所以我们会使用 mock 工具进行数据/方法的模拟实现 , 节约不必要的测试用例代码

jest 种的常用 mock 函数

jest 内置了 mock 功能足够应付大部分的测试场景

fn() 最简单的 mock 函数 , 如果不定义参数的话默认返回 undefind


test("sum 1+1 =2", () => {
  expect(sum(1, 1)).toBe(2);
});

test("使用fn() mock一个 undefined 数据", () => {
  let mockResult = jest.fn();
  expect(mockResult()).toBeUndefined();
});

test("使用fn() mock 数据 观察是否被调用", () => {
  let mockResult = jest.fn();
  let useReuslt = mockResult();
  expect(mockResult).toBeCalled();
});

test("使用fn() mock 数据 观察是否被调用一次", () => {
  let mockResult = jest.fn();
  let useReuslt = mockResult();
  expect(mockResult).toBeCalledTimes(1);
});

test("使用fn() mock一个带参函数", () => {
  let mockResult = jest.fn();
  let paramsResult = mockResult(1, 2, 3);
  expect(mockResult).toHaveBeenCalledWith(1, 2, 3);
});

test("使用fn() mock一个带参函数", () => {
  let mockResult = jest.fn();
  let paramsResult = mockResult(1, 2, 3);
  expect(mockResult).toHaveBeenCalledWith(1, 2, 3);
});

test("使用fn() 设置返回值", () => {
  let mockResult = jest.fn().mockReturnValue("linqisheng");
  let result = mockResult();
  expect(result).toBe("linqisheng");
});

test("使用fn() 自定义函数", () => {
  let mockResult = jest.fn((str) => str);
  expect(mockResult("linqisheng")).toBe("linqisheng");
});

test("使用fn() 自定义异步函数 promise", () => {
  let mockResult = jest.fn().mockResolvedValue("linqisheng");
  // 断言mockFn调用后返回的是Promise对象
  expect(Object.prototype.toString.call(mockResult())).toBe("[object Promise]");
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容