如何在反应测试库中设置状态

时间:2019-07-06 11:25:34

标签: setstate react-testing-library

概述:

  • 在使用酶进行测试之前,我会重构脚本测试,但是现在,我想使用@ testing-library / react

问题:

  • 我在@ testing-library / react中找不到setState的解决方案

1 个答案:

答案 0 :(得分:0)

不管使用什么测试库,使用setState都是危险的方法。

  1. 这取决于实现细节(例如,状态内的属性名称),因此维护测试变得更加困难-更改更多的测试,在应用程序正常时易于破坏测试等。
  2. 一旦将类组件转换为带有钩子的功能组件,就无法调用该函数。因此,您甚至更多地依赖于实现细节。
  3. 最后,直接状态操纵可能会以您在现实世界中永远无法获得的状态结束。这意味着您的组件将被破坏,因为无法达到某些状态,但直接初始化的测试就可以了。

那么你最好做什么?提供道具,更改道具,调用道具({wrapper.find('button').filter(button => button.text() === 'Cancel').props().onClick()代表酶,fireEvent.click(getByText(/Cancel/i))代表RTL))并根据渲染内容进行验证。

这样,您的测试将更短,最实际,并且在更新被测组件之后需要进行的更改更少。