我想知道如何使用带有酶的useState
挂钩来测试功能组件的状态变化。通常,测试将类似于expect(wrapper.state()).toEqual(expectedState)
,但是我得到了错误:
ReactWrapper::state() can only be called on class components
我知道Hooks仍处于alpha阶段,shallow
之类的东西仍然无法正常工作,但是我想知道有没有办法解决这个问题?
答案 0 :(得分:1)
您应避免测试实施细节。相反,在触发将更新您的状态的操作时,测试组件的行为是否符合您的预期。
答案 1 :(得分:0)
我认为您不应该控制组件状态。单元测试应该是控制输入和输出。
赞:
提供对FormComponent真实的状态支持,希望存在 .send-user-data 按钮。
如果您检查Enyzme源代码here。您可以看到实例和类类型检查。功能组件nodeTypes不等于类并且没有实例。
您可以使用https://github.com/etiennedi/enzyme-wait等待异步元素。
您的测试可以是这样。
模拟点击事件 .send-user-data 按钮等待(其setTimeout,promise或xhr)并期望返回 用户。