【发布时间】: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.1和24.0.100都可以安装给你。实际版本可以在package-lock.json查看。 -
我也知道吊装并没有什么影响尝试重新排序并在模拟后对 component.jsx 使用 require,但没有产生任何影响
-
@skyboyer 检查了锁定文件,升级后它正好在:24.9.0 并且没有什么不同
标签: reactjs unit-testing mocking jestjs react-testing-library