You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jest单元测试遇useModalStyles返回undefined错误,求解决建议

解决Jest测试中useModalStyles返回undefined的问题

报错原因

EditEvent组件内部调用的useModalStyles钩子依赖Chakra UI的Modal上下文,测试时未提供该上下文环境,导致钩子返回undefined,触发报错。

解决方法

方法1:用Modal组件包裹测试目标组件

按照报错提示,将EditEvent组件包裹在<Modal />中,并提供必要的props(如isOpen={true}确保渲染),同时确保测试组件处于ChakraProvider环境下:

import { ChakraProvider, Modal } from '@chakra-ui/react';

// 测试代码中修改render部分
render(
  <ChakraProvider>
    <Modal isOpen={true}>
      <EditEvent eventId={eventId} />
    </Modal>
  </ChakraProvider>
);

方法2:使用Chakra UI专用测试工具

Chakra UI提供了带上下文的测试render工具,可自动注入ChakraProvider,简化测试代码:

import { render } from '@chakra-ui/react/test-utils';
import { Modal } from '@chakra-ui/react';

// 测试中直接使用该render
render(
  <Modal isOpen={true}>
    <EditEvent eventId={eventId} />
  </Modal>
);

注意事项

不要单纯依赖useModalStyles的mock,因为该钩子依赖Modal组件创建的内部上下文,仅mock钩子函数无法满足上下文依赖要求,仍会触发报错。

内容的提问来源于stack exchange,提问作者shriram choudhary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:07:16