【发布时间】:2020-11-29 07:19:27
【问题描述】:
我试图了解什么时候可以只导入模拟,什么时候需要导入模拟并在测试文件中仍然使用jest.mock。我正在查看来自 Jest 的 Github 的 manual-mocks example。
一步模块模拟
在 Lodash 测试中,Lodash is mocked 在 __mocks__ 目录中使用 createMockFromModule,导出,并且只是 imported using the standard module import and used directly in the test(没有额外的模拟)。
两步模拟
在同一个项目中,User model is exported 和 separate User mock file。但是在User mocked test 中,用户被导入但是还有一个额外的步骤使用jest.mock('../models/user');
我的问题/困惑
为什么 Lodash 测试不需要测试文件中的额外 jest.mock,或者为什么用户测试需要它?在项目中,似乎我可以同时测试 actual 和 mocked 用户实现,但 Lodash 只会使用 mocked 实现,即使两者在__mocks__ 目录中使用createMockFromModule 创建/导出。
【问题讨论】:
-
考虑在问题中提供相关的 sn-ps,尤其是因为它们很小。这个问题应该是完全可以理解的,而不需要导航到可能变得不可用的外部资源。
标签: javascript mocking jestjs