【发布时间】:2019-06-07 15:45:44
【问题描述】:
如果您有一个 React 组件调用了一个获取数据的自定义钩子,那么在测试 React 组件时模拟该内部自定义钩子结果的最佳方法是什么?我看到了两种主要方法:
1) Jest.mock 自定义钩子。这似乎是最推荐的方法,但似乎它需要测试比组件的 props 接口可能建议的内容更多地了解内部实现细节以及它可能需要模拟的内容(假设使用 prop-types 或打字稿)
2) 使用依赖注入方法。将钩子声明为道具,但将其默认为真正的钩子,因此您不必在渲染组件的任何地方设置它,但允许使用模拟进行覆盖以进行测试。这是一个人为设计的代码框示例,其中包含一个模拟自定义钩子的测试:
2 需要更多的输入,但似乎更容易用于测试。但是,测试必须了解组件的内部实现细节才能测试渲染输出的任何条件逻辑,所以这可能并不重要,1 是最好的方法。 1是要走的路吗?你看到了什么权衡?我完全错过了另一种方法吗?
【问题讨论】:
-
我一直在想同样的事情。在引入 React Hooks 之前,我使用 recompose 大约一年,并且喜欢它为解耦和简单的单元测试所做的事情。 Andrew Clark (recompose) 也在 React Hooks 上工作,并建议在 recompose 上使用它,但我还没有看到很好的例子来说明同样的解耦能力。有没有人有任何关于如何以与重构方法 HoC 相同的方式处理钩子的体面示例?
-
这么多@WillSchoenberger!
标签: reactjs unit-testing react-hooks