Jest React测试es6导入/导出不需要的mock

kuarbcqp  于 2022-12-08  发布在  Jest
关注(0)|答案(2)|浏览(203)

当使用ES6导入/导出语法时,Jest似乎在默认情况下自动模拟我导入的组件,即使我显式地关闭了对该组件的模拟。

jest.autoMockOff();
jest.dontMock("../bundles/Opportunities/MarkAsLost.jsx");

这是测试组件顶部的导入:

import MarkAsLost from "../bundles/Opportunities/MarkAsLost.jsx";

这是正在测试的组件底部的导出:

export default MarkAsLost;

这是在测试文件中记录导入组件的结果:

{ [Function]
  _isMockFunction: true,
  _getMockImplementation: [Function],
  mock: { calls: [ [Object] ], instances: [ [Object] ] },
  mockClear: [Function],
  mockReturnValueOnce: [Function],
  mockReturnValue: [Function],
  mockImpl: [Function],
  mockImplementation: [Function],
  mockReturnThis: [Function],
  displayName: 'MarkAsLost' }

当我使用旧的语法时,即:

var MarkAsLost = require("../bundles/Opportunities/MarkAsLost.jsx");
module.exports = MarkAsLost;

这是登录组件的结果,该组件现在的行为与我在测试文件中所希望的一样

{ [Function] displayName: 'MarkAsLost' }

任何帮助都将不胜感激

k5ifujac

k5ifujac1#

我也遇到过同样的问题,jest.*方法根本不起作用,另一方面,将“unmocking”特性移到package.json中的Jest配置中--工作正常:

{
  "jest": {
    "unmockedModulePathPatterns": [
      ".*"
    ]
  }
}
bksxznpy

bksxznpy2#

有一个类似的问题。Jest在模仿axios,因为其中一个依赖项在测试中没有示例化。所以我只是在测试文件的顶部添加了jest.unmock(axios)

相关问题