使用酶进行测试时,使用React Hook访问功能组件的状态

时间:2019-02-01 10:13:49

标签: reactjs enzyme react-hooks

我想知道如何使用带有酶的useState挂钩来测试功能组件的状态变化。通常,测试将类似于expect(wrapper.state()).toEqual(expectedState),但是我得到了错误:

ReactWrapper::state() can only be called on class components

我知道Hooks仍处于alpha阶段,shallow之类的东西仍然无法正常工作,但是我想知道有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:1)

您应避免测试实施细节。相反,在触发将更新您的状态的操作时,测试组件的行为是否符合您的预期。

答案 1 :(得分:0)

我认为您不应该控制组件状态。单元测试应该是控制输入和输出。

赞:

  

提供对FormComponent真实的状态支持,希望存在 .send-user-data 按钮。

如果您检查Enyzme源代码here。您可以看到实例和类类型检查。功能组件nodeTypes不等于类并且没有实例。

您可以使用https://github.com/etiennedi/enzyme-wait等待异步元素。

您的测试可以是这样。

  

模拟点击事件 .send-user-data 按钮等待(其setTimeout,promise或xhr)并期望返回   用户。