即使禁用自动模拟,jest会自动模拟缺少依赖项吗?

时间:2017-06-21 05:07:55

标签: reactjs decorator jestjs enzyme

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会自动模拟缺少的依赖项吗?

1 个答案:

答案 0 :(得分:1)

Thanks to Michał Pierzchała in this comment:

  

当给定模块存在手动模拟时,Jest的模块系统将在显式调用jest.mock时使用该模块(' moduleName')。 但是,即使未调用jest.mock(' moduleName'),手动模拟也将优先于节点模块。要选择退出此行为,您需要显式调用jest。在应该使用实际模块实现的测试中取消模拟(' moduleName')。