I wrote a decorator simplify smart/dumb components separation in ReactJS,我曾尝试将测试代码分成多个文件并移动colaborator classes to the __mocks__ directory。
文件结构变为:
src
__mocks__
SharedComponent.js
SomeComponent.js
SomePresenter.js
SpecificPresenter.js
__tests__
index.js
index.js
在测试文件index.js
中,要加载SomeComponent
我这样做:
import SomeComponent from 'SomeComponent'
该类仅存在于mocks目录中,它仅用于测试装饰器。 You can see here我并没有明确地在manual says that auto mocking is disabled by default.
中嘲笑那个类即使禁用自动模拟,jest会自动模拟缺少的依赖项吗?
答案 0 :(得分:1)
Thanks to Michał Pierzchała in this comment:
当给定模块存在手动模拟时,Jest的模块系统将在显式调用jest.mock时使用该模块(' moduleName')。 但是,即使未调用jest.mock(' moduleName'),手动模拟也将优先于节点模块。要选择退出此行为,您需要显式调用jest。在应该使用实际模块实现的测试中取消模拟(' moduleName')。