Jest AutoMocking在测试React组件时是否有效?

Mit*_*h A 7 flux reactjs jestjs

我的有限数量的测试似乎表明答案是否定的.我正在为一个父级React组件(也就是一个控制器视图)编写一个单元测试,它依赖于一个商店.但是,Jest没有为商店提供自动模拟,因为文档建议它应该,而是调用真正的实现.

这是一个bug还是设计?如果是后者,单元测试反应组件是不可取的?

编辑1

在测试CommonJs模块时,自动锁定工作正常; 它只是不适用于反应组件.

cua*_*man 0

听起来您的测试是集成测试而不是单元测试。Jest 会模拟一切,因为它主要用于单元测试。我与您分享帮助我简化和加速单元测试的模式。

提取辅助方法

提取执行逻辑的方法,例如。映射、过滤等到不同文件中的 Utils 模块。然后测试 Utils 模块而不是 React 组件。这样就可以降低测试的复杂性。

这同样适用于商店...尝试运行 Utils 模块中的所有逻辑。为 Stores 留下仅用于 getter 和 setter 的方法。

不要忘记解锁 keyMirror 和 Dispatcher

当使用KeyMirror管理常量时,很容易忘记unMock这个模块。商店通常使用大量 ActionType 常量。

对于 Dispatcher 依赖项和 EventEmitter 也是如此。