【问题标题】:Jest React testing es6 import/export unwanted mockJest React 测试 es6 导入/导出不需要的模拟
【发布时间】:2016-07-12 09:42:59
【问题描述】:

当使用 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' }

任何帮助将不胜感激

【问题讨论】:

  • 如果可以选择,我可能会建议您查看Enzyme。你可能会有更快乐的单元测试体验。 :)
  • 酶很棒。但是@ffxsam 你的评论在这里断章取义。
  • 当然。这就是为什么我只是将其作为评论而不是答案。

标签: javascript testing reactjs ecmascript-6 jestjs


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-12-10
    • 2021-01-21
    • 2015-12-10
    • 2018-04-15
    • 1970-01-01
    • 2015-11-05
    相关资源
    最近更新 更多