React组件测试:"酶 "是测试类组件,而 "testing-library "更多是测试功能组件?

问题描述 投票:2回答:1

我正在努力测试简单的组件(功能型),通过改变输入值应该改变组件状态中的var,通过onChange事件.Seems like as the state and functions are encapsulated in the component, testing-library is more suitable.Make sense?Is there any rulesguidelines for when to use which?Thanks.

reactjs jestjs enzyme react-component react-testing-library
1个回答
1
投票

对组件的状态等实现细节进行断言,这有违React测试库的原则。

相反,该库建议你编写与用户如何与你的代码交互非常相似的测试。

文件:

我们尽量只公开一些方法和实用程序,鼓励你编写与网页使用方式非常相似的测试。


有什么规则指引何时使用哪种方法吗?

这可能是一个有点主观的话题,可能会因你在哪个团队工作而大相径庭。

就我个人而言,我从只使用Enzyme(特别是 shallow 渲染)到只使用React测试库,这就是发生的事情。

  • 这改善了我的开发经验,因为我觉得当代码实现发生变化时,测试变得更容易维护。
  • 我对测试更有信心,因为它们现在更像软件的实际使用情况。
  • 测试更容易阅读,更直观。想想看 clicking this button should display that message而不是 component x should have correct prop y.

我相信Enzyme可以做很多React测试库所做的事情,但是,我建议至少要远离 shallow 渲染。这不是一个好的做法

我仍然没有找到Enzyme解决了React测试库没有解决的问题的用例。但这并不意味着它不存在。只是意味着RTL目前很适合我。

© www.soinside.com 2019 - 2024. All rights reserved.