【问题标题】:How do I jest.mock a react component import inside another react component file我如何在另一个反应组件文件中 jest.mock 一个反应组件导入
【发布时间】:2020-01-01 14:16:27
【问题描述】:

我正在尝试使用较新的 @testing-library/react 库编写一个笑话测试。 这个较新的测试库没有浅层渲染,所以我试图模拟出我的测试组件用作解决方法的反应子组件。

但是我在使用 jest.mock 时遇到了问题,我似乎无法正确地模拟“subComponent.jsx”文件。

当我在 test.js 文件中使用 jest.mock('subComponent.jsx', ...) 时,它只会模拟 test.js 文件中 subComponent.jsx 的导入。当我从 component.jsx 内部导入 subComponent.jsx 时,test.js 中的模拟不再适用。

那么,我如何从模拟的 component.jsx 内部导入 subComponent.jsx,而不必在内部处理 component.jsx 文件?

顺便说一句,如果有人有好的建议,我自然也愿意接受任何其他解决方案,以有效地实现 @testing-library/react 的浅层渲染......

test.js:

import Component from 'component.jsx';
jest.mock('subComponent.jsx', ...doSomething);


component.jsx:

import SubComponent from 'subComponent.jsx;
[SubComponent.jsx is not mocked here!!!!]

【问题讨论】:

  • jest.mock()(不像jest.doMock) 被提升并且应该按你期望的那样工作。你用什么笑话版本?可能是某些旧版本的错误已针对较新版本进行了修复。
  • @skyboyer "jest": "^24.0.0","@testing-library/jest-dom": "^4.1.0","@testing-library/react": "^ 9.1.3" 我现在开玩笑升级到 24.9.0,没有什么不同
  • 它不是 实际 版本。看,^24.0.0 范围 24.0.124.0.100 都可以安装给你。实际版本可以在package-lock.json查看。
  • 我也知道吊装并没有什么影响尝试重新排序并在模拟后对 component.jsx 使用 require,但没有产生任何影响
  • @skyboyer 检查了锁定文件,升级后它正好在:24.9.0 并且没有什么不同

标签: reactjs unit-testing mocking jestjs react-testing-library


【解决方案1】:

抱歉,正如@skyboyer 指出的那样,这是我这边的一个大小写错误 非常感谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2019-03-08
    相关资源
    最近更新 更多