适用范围:
1. 作用:
- 用仿真模块来替换测试时所使用的真实模块
- 从而模拟真实模块的环境
2. 场景
- 某些api在当前开发测试环境中无法使用
- 如真实的DOM操作, 某些第三方库的方法
语法
1. 单文件仿真模块
1.1. 创建仿真模块
实例:
以typescript环境为例
对于/scr/目录下的模块fuck.ts
原模块内容
export function say(){
return "fuck!"
}在/scr/__mocks__/目录下新建模块fuck.ts
fuck.ts内容:
let fuck = jest.createMockFromModule<typeof import("../fuck")>('../fuck')//返回一个可以修改属性的模块对象
fuck.say = () => "mock fuck!"//替换掉某些api
module.exports = fuck//导出整个替换后的仿真模块说明
- child::typeof关键字
- child::import()动态导入
- base::module.exports
1.2. 在测试中使用仿真模块
2.1. 实例
对于/test/目录下的测试文件
- 在测试文件中添加
jest.mock('../src/fuck');- 当被测试代码中使用到fuck模块时, 就会使用仿真模块代替真实模块