Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jestjs 阐明嵌套模块中的jest模拟行为_Jestjs - Fatal编程技术网

Jestjs 阐明嵌套模块中的jest模拟行为

Jestjs 阐明嵌套模块中的jest模拟行为,jestjs,Jestjs,这些笑话把我弄糊涂了 这是在: 使用jest.mock模拟的模块仅针对调用jest.mock的文件进行模拟。导入模块的另一个文件将获得原始实现,即使它在模拟模块的测试文件之后运行 但政府: axios导入到名为Users的文件中 users.test.js设置以下模拟: 从“axios”导入axios; 从“./Users”导入用户; 开玩笑的模仿(‘axios’); 文档向我建议,测试文件不应该能够在srcusers.js文件中模拟axios。。。然而,这是文档中的示例,因此它肯定会起作

这些笑话把我弄糊涂了

这是在:

使用jest.mock模拟的模块仅针对调用jest.mock的文件进行模拟。导入模块的另一个文件将获得原始实现,即使它在模拟模块的测试文件之后运行

但政府:

  • axios导入到名为Users的文件中
  • users.test.js设置以下模拟:
从“axios”导入axios;
从“./Users”导入用户;
开玩笑的模仿(‘axios’);
文档向我建议,测试文件不应该能够在src
users.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
的未经修改的实现

有人能解释一下吗

  • jest文档中的示例如何与模拟如何工作的描述保持一致
  • 为什么文档中的示例会起作用,而我的却不行

  • 我们发现问题在于项目是monorepo,这意味着存在多个节点获取副本

    除了明确要求另一个包的node fetch副本(即
    require('../Other package/node_modules/node fetch')
    ,我如何让一个包的测试模拟另一个包的node_modules目录中包含的node_模块