使用useState和酶查询组件的内部状态

时间:2019-03-24 14:50:54

标签: reactjs enzyme

我正在使用酶3.9.0。

我刚刚将类组件重构为使用useState钩子的组件。

我以前通过像这样提取组件来测试组件的内部状态:

const shortcutActions = wrapper.state().shortcuts;    

expect(shortcutActions).toHaveLength(1); 

使用useState时是否可以查询内部状态?

1 个答案:

答案 0 :(得分:1)

挂钩是全新的,并且正在对其进行更新以支持它们。

您可以在此处跟踪总体进度:Issue #2011

这里特别跟踪对useState的支持:Issue #2008

因此,对useState的当前支持水平是:

  • mount支持get,并使用set
  • 更新渲染的元素
  • shallow支持get,但尚不支持使用set的渲染元素更新

对于直接查询内部状态,我不确定是否有必要。

来自this section

  

挂钩在班级内部工作。但是您可以使用它们而不是编写类。

...因此,钩子仅在 中起作用,React现在更喜欢调用"function components"

使用useState定义的任何状态将仅存在于函数体内,并且对该函数之外的任何事物均不可访问。

修改状态的唯一方法是与函数返回的渲染输出进行交互,因此测试功能组件应该只涉及与渲染组件进行交互并验证其是否按预期重新渲染。