在单元测试中测试React组件的最佳方法是什么?
第一个问题是装饰器(或HOC)。我们不想测试它们,但是如果没有它们,很难深入测试它如何作为组件工作;但是为了使它们工作,我们必须模拟所有供应商链(在我们的情况下是~3个组件,加上上下文等),而且,从我的角度来看,它太脆弱了。
下一个问题是关于组件内部的逻辑。我知道,有很多文章都有很酷的建议,比如“不要在组件中使用逻辑”,但我们经常需要保持本地状态(如横幅等)。是应该只使用shallowMount
进行测试,还是不花费它?生命周期方法,如果我们开始检查它,是不是它使我们的测试太脆弱而且太多了解实现?
最后一个问题是关于标记。我们应该检查React组件内的任何内容吗?我阅读了各种各样的教程,我认为按标签查找是有史以来最糟糕的例子(我甚至不想在这里详细介绍)。对我来说,Jest快照功能似乎也不是一个好选择(我也看到了同样的问题)。我看到的内容可能会有所帮助 - 只需检查传递差异道具时是否呈现不同的组件(例如分别为Loader
和Offer
),但有时它们是某个容器本身的子项,并且shallowRendering不起作用,这将我们带回到初始点。
总而言之,我认为只有两点:
第二点可能非常难(因为嵌套的孩子很深),所以现在我倾向于只渲染一个组件(检查它没有失败 - 以浅层方式),并通过调用方法检查逻辑检查后的状态。
你的策略是什么?