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

标签 javascript reactjs enzyme react-hooks react-hooks-testing-library

目前我正在使用带有反应钩子(Hook)的功能组件。但我无法完全测试 useState Hook 。考虑这样一个场景,在 useEffect Hook 中,我正在执行 API 调用并在 useState 中设置值。对于 jest/enzyme,我已模拟数据进行测试,但无法在 jest 中设置 useState 的初始状态值。

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

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

最佳答案

您可以模拟 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

关于javascript - 如何在jest和enzyme中设置useState Hook的初始状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57025753/

相关文章:

javascript - 如何获取DropDown中选中的数据ID?

javascript - jQuery 获取所有后代节点包括文本节点

javascript - 如何使用 Flow 解决 Untyped 模块错误?

javascript - 加载多个 jQuery 版本

javascript - 根据图像位置目录附加 CSS 样式

javascript - 警告: Prop 类型失败:提供给“提供者”的对象类型为“对象”的 Prop child 无效,需要一个ReactElement

unit-testing - 如何从CDN注入(inject)外部JS到Jest单元测试?

javascript - 如何测试条件渲染组件的状态转换

typescript - React Native with Typescript and Jest 在 0.57 更新 : Couldn't find preset "module:metro-react-native-babel-preset" relative to directory 后被破坏

reactjs - 如何在 React-Redux 中使用 Mocha、Chai 和 Enzyme 测试方法和回调