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

goi*_*ter 5 javascript testing ecmascript-6 reactjs jestjs

当使用ES6导入/导出语法时,似乎Jest是默认情况下自动导入我导入的组件,即使我明确地为组件关闭了模拟.

jest.autoMockOff();
jest.dontMock("../bundles/Opportunities/MarkAsLost.jsx");
Run Code Online (Sandbox Code Playgroud)

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

import MarkAsLost from "../bundles/Opportunities/MarkAsLost.jsx";
Run Code Online (Sandbox Code Playgroud)

这是被测组件底部的导出:

export default MarkAsLost;
Run Code Online (Sandbox Code Playgroud)

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

{ [Function]
  _isMockFunction: true,
  _getMockImplementation: [Function],
  mock: { calls: [ [Object] ], instances: [ [Object] ] },
  mockClear: [Function],
  mockReturnValueOnce: [Function],
  mockReturnValue: [Function],
  mockImpl: [Function],
  mockImplementation: [Function],
  mockReturnThis: [Function],
  displayName: 'MarkAsLost' }
Run Code Online (Sandbox Code Playgroud)

当我使用旧样式语法,即:

var MarkAsLost = require("../bundles/Opportunities/MarkAsLost.jsx");
module.exports = MarkAsLost;
Run Code Online (Sandbox Code Playgroud)

这是loggin组件的结果,该组件现在在测试文件中表现得如我所愿

{ [Function] displayName: 'MarkAsLost' }
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激

bip*_*obe 0

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

{
  "jest": {
    "unmockedModulePathPatterns": [
      ".*"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)