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

React应用测试出现ReferenceError: expect is not defined报错如何解决?

问题成因

该ReferenceError: expect is not defined报错出现在@testing-library/jest-dom的初始化阶段,核心原因是jest的全局expectAPI没有被提前加载,导致jest-dom扩展匹配器时找不到目标对象,结合你提供的配置常见触发点如下:

  • react-scripts@4.0.3 要求测试前置配置文件必须命名为setupTests.js且放在src根目录下,文件命名错误、位置错误都会导致配置不生效
  • 你当前的配置中没有正确配置jest的setupFilesAfterEnv参数,jest-dom的导入时机早于jest全局变量初始化
  • 依赖缓存或安装冲突导致内置jest的全局变量暴露异常
解决方法

按以下步骤依次排查操作即可解决:

  1. 确认src目录下存在正确命名的setupTests.js文件,将文件内容替换为:
import '@testing-library/jest-dom/extend-expect';

注意不要使用import '@testing-library/jest-dom'的简写写法,react-scripts@4对该写法兼容存在缺陷。
2. 如果修改后仍然报错,在两个测试文件的顶部手动添加上述导入语句,强制在测试代码执行前加载jest-dom扩展。
3. 清除jest缓存后再运行测试,避免旧缓存影响配置生效:

npm run test -- --clearCache
npm run test
  1. 如果仍未解决,在package.json中补充jest配置指定前置加载文件:
{
  // 原有配置保持不变,新增以下jest字段
  "jest": {
    "setupFilesAfterEnv": ["<rootDir>/src/setupTests.js"]
  }
}
  1. 终极解决方案:删除项目根目录的node_modules文件夹和package-lock.json/yarn.lock文件,重新执行npm install安装依赖后再运行测试。

内容的提问来源于stack exchange,提问作者Anwar Hossain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:15:03