如何在 jest 和 enzyme 中设置 useState Hook 的初始状态?

新手上路,请多包涵

目前我正在使用带有反应挂钩的功能组件。但我无法完全测试 useState 挂钩。考虑这样的场景,在 useEffect 挂钩中,我正在执行 API 调用并在 useState 中设置值。对于开玩笑/酶,我已经模拟了要测试的数据,但我无法开玩笑地为 useState 设置初始状态值。

const [state, setState] = useState([]);

我想在开玩笑中将初始状态设置为对象数组。我找不到任何类似于类组件的 setState 函数。

原文由 Srigar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 759
1 个回答

您可以模拟 React.useState 以在测试中返回不同的初始状态:

 // Cache original functionality
const realUseState = React.useState

// Stub the initial state
const stubInitialState = ['stub data']

// Mock useState before rendering your component
jest
  .spyOn(React, 'useState')
  .mockImplementationOnce(() => realUseState(stubInitialState))

参考: https ://dev.to/theactualgivens/testing-react-hook-state-changes-2oga

原文由 Jimmy 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题