首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟对进口然后模拟

模拟对进口然后模拟
EN

Stack Overflow用户
提问于 2020-08-09 14:21:55
回答 1查看 1.5K关注 0票数 4

我试图理解什么时候我可以导入一个模拟和什么时候我需要导入模拟,并且仍然在测试文件中使用jest.mock。我在看来自Jest's Github的手动模拟示例

一步模块模拟

在Lodash测试中,Lodash 被嘲弄__mocks__目录中使用createMockFromModule导出,并简单地使用使用标准模块导入导入并直接在测试中使用 (没有附加的模拟)。

两步模拟

在同一个项目中,用户模型导出单独的用户模拟文件都有。但是在用户模拟测试中,用户是导入的,但是还有一个使用jest.mock('../models/user');的附加步骤。

我的问题/困惑

为什么Lodash测试不需要测试文件中的附加jest.mock,或者为什么用户测试需要它?在这个项目中,我似乎可以测试实际的和模拟的用户实现,但是Lodash将只使用模拟的实现,即使两者都是使用createMockFromModule__mocks__目录中创建/导出的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-09 15:28:42

区别在于lodash是Node模块,user是本地模块,后者需要jest.mock('../models/user')才能使用来自__mocks__的模拟。

正如文献资料所说,

如果您要模拟的模块是节点模块(例如:lodash),那么模拟应该放置在__mocks__目录中,与node_modules相邻(除非您配置根指向项目根目录以外的文件夹),并且将被自动模拟。没有必要显式调用jest.mock('module_name')。警告:如果我们想模拟Node的核心模块(例如:fspath),那么就需要显式调用jest.mock('path'),因为核心节点模块在默认情况下不会被模拟。

这样可以避免NPM包的模拟和同名的本地模块之间的意外冲突。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63327443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档