我正在使用酶3.9.0。
我刚刚将一个类组件重构为一个使用useState
钩子的组件。
我之前通过像这样提取组件来测试组件的内部状态:
const shortcutActions = wrapper.state().shortcuts;
expect(shortcutActions).toHaveLength(1);
使用useState
时是否可以查询内部状态?
钩子是全新的,酶正在更新以支持它们。
您可以在此处跟踪一般进度:问题 #2011。
此处特别跟踪对useState
的支持:问题 #2008。
因此,当前对useState
的支持级别为:
mount
支持get
和渲染元素更新set
shallow
支持get
,但尚不支持使用set
更新渲染元素
至于直接查询内部状态,我不确定是否有必要。
从本节:
钩子在类中不起作用。但是您可以使用它们而不是编写类。
。所以钩子只适用于React
现在更喜欢称之为"function components"
.
使用useState
定义的任何状态都只存在于函数体内,函数外部的任何内容都无法访问。
修改该状态的唯一方法是与函数返回的呈现输出进行交互,因此测试函数组件应仅涉及与呈现的组件交互并验证它是否按预期重新呈现。