Jestjs 阐明嵌套模块中的jest模拟行为
这些笑话把我弄糊涂了 这是在: 使用jest.mock模拟的模块仅针对调用jest.mock的文件进行模拟。导入模块的另一个文件将获得原始实现,即使它在模拟模块的测试文件之后运行 但政府:Jestjs 阐明嵌套模块中的jest模拟行为,jestjs,Jestjs,这些笑话把我弄糊涂了 这是在: 使用jest.mock模拟的模块仅针对调用jest.mock的文件进行模拟。导入模块的另一个文件将获得原始实现,即使它在模拟模块的测试文件之后运行 但政府: axios导入到名为Users的文件中 users.test.js设置以下模拟: 从“axios”导入axios; 从“./Users”导入用户; 开玩笑的模仿(‘axios’); 文档向我建议,测试文件不应该能够在srcusers.js文件中模拟axios。。。然而,这是文档中的示例,因此它肯定会起作
- axios导入到名为Users的文件中
- users.test.js设置以下模拟:
从“axios”导入axios;
从“./Users”导入用户;
开玩笑的模仿(‘axios’);
文档向我建议,测试文件不应该能够在srcusers.js
文件中模拟axios。。。然而,这是文档中的示例,因此它肯定会起作用
在我的测试套件中,我有一个实现非常相似模式的测试文件
const fetch=require('node-fetch')
const{getApp}=require('../getApp');
jest.mock('node-fetch',()=>require('fetch-mock-jest')。sandbox())
唯一的区别是
不是直接在node fetch
中导入的,而是由它的一个依赖项导入的get app.js
- 我使用
而不是require()
import
fetch
函数的值时,我得到了节点fetch
的未经修改的实现
有人能解释一下吗
我们发现问题在于项目是monorepo,这意味着存在多个节点获取副本 除了明确要求另一个包的node fetch副本(即
require('../Other package/node_modules/node fetch')
,我如何让一个包的测试模拟另一个包的node_modules目录中包含的node_模块