【发布时间】:2018-12-28 04:29:06
【问题描述】:
我正在尝试使用 Jest 和 Enzyme 对我的 React 组件进行快照测试。一些组件中包含动画组件(从react-spring/react-motion 导入),它将一个函数呈现为其子级。这使得测试变得异常困难。我做了很多研究,提出了 3 个想法:
- 使用 Enzyme 的
mount渲染所有内容,并对其进行快照测试。我发现昂贵的组件不可能/无效,并且生成的快照通常非常重(1MB - 2MB)。 - 使用 Enzyme 的
shallow并快照测试组件。然后找到动画组件,使用 Enzyme 的renderProp()渲染其中的子元素并进行快照测试。这工作得很好,直到我发现renderProp()不能很好地与<StaggeredMotion />配合使用react-motion和react-spring。解决此问题的方法是将函数显式调用为.prop('children')(),然后将整个代码变浅,但代码看起来很混乱且难以阅读。 - 只需使用 Enzyme 的
shallow并快照测试组件。其余的都在图书馆那边。
问题是:我应该使用哪一个?如果这些都不够好,还有哪些选择?提前致谢。
(如果您需要代码示例,我很乐意提供)
【问题讨论】:
-
这个问题你解决了吗?
-
@TimMG 我决定将 react-spring 中的部分提取到不同的组件并进行测试。但是我认为我们不需要通过引入钩子来做到这一点
-
我按照您的指示为动画部分制作了一个新组件,但我的测试仍然失败。这可能是因为在我要测试的组件中导入了新组件。
-
@TimMG 如果您提出新问题,我将非常乐意回答
标签: reactjs testing enzyme react-motion react-spring