React组件测试:“酶”用于测试类组件,而“ testing-library”对功能组件更重要吗?

时间:2020-04-19 19:57:37

标签: reactjs jestjs enzyme react-component react-testing-library

我正在努力测试简单的组件(功能性),即通过更改输入值应通过onChange事件更改组件状态下的var。 好像状态和功能封装在组件中一样,testing-library更合适。 说得通? 有什么规则/指南何时使用? 谢谢。

1 个答案:

答案 0 :(得分:1)

断言在实现细节(例如组件的状态)上断言是违反React测试库的原理的。

相反,该库建议您编写与用户与您的代码进行交互的方式非常相似的测试。

来自docs

我们尝试仅公开鼓励您编写与网页使用方式非常相似的测试的方法和实用程序。


对于何时使用哪个规则/准则?

这可能是一个主观话题,并且可能会因您所在的团队而异。

个人而言,我从仅使用酶(特别是shallow渲染)切换为仅使用React Testing Library,这就是发生的情况:

  • 它改善了我的开发人员体验,因为当代码实现更改时,我觉得测试变得更容易维护。
  • 我对测试更有信心,因为它们现在更像软件的实际使用方式了。
  • 测试更易于阅读和直观。考虑一下clicking this button should display that message,而不是component x should have correct prop y

我相信Enzyme可以完成React Testing Library的许多工作,但是,我建议至少避免使用shallow渲染。 It is not considered a good practice

我仍然没有找到用例,其中Enzyme解决了React Testing Library无法解决的问题。但这并不意味着它不存在。这只是意味着RTL现在很适合我。