我正在使用酶3.9.0。
我刚刚将类组件重构为使用useState
钩子的组件。
我以前通过像这样提取组件来测试组件的内部状态:
const shortcutActions = wrapper.state().shortcuts;
expect(shortcutActions).toHaveLength(1);
使用useState
时是否可以查询内部状态?
答案 0 :(得分:1)
挂钩是全新的,并且正在对其进行更新以支持它们。
您可以在此处跟踪总体进度:Issue #2011。
这里特别跟踪对useState
的支持:Issue #2008。
因此,对useState
的当前支持水平是:
mount
支持get
,并使用set
shallow
支持get
,但尚不支持使用set
的渲染元素更新对于直接查询内部状态,我不确定是否有必要。
来自this section:
挂钩不在班级内部工作。但是您可以使用它们而不是编写类。
...因此,钩子仅在 中起作用,React
现在更喜欢调用"function components"
。
使用useState
定义的任何状态将仅存在于函数体内,并且对该函数之外的任何事物均不可访问。
修改状态的唯一方法是与函数返回的渲染输出进行交互,因此测试功能组件应该只涉及与渲染组件进行交互并验证其是否按预期重新渲染。