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

使用Enzyme测试React组件遇Unexpected token <错误求助

解决Enzyme测试中JSX语法的Unexpected token错误

这个错误我之前也碰到过,问题出在JSX语法没被Babel正确转译,另外你的测试代码还有个小语法问题,我来帮你一步步解决:

1. 先修复测试代码里的语法错误

你写的expect语句有个括号位置错误,正确的写法应该是:

test('should say hello',() => {
  const loginPage = shallow(<LoginPage />)
  // 把.toBe(true)移到contains的括号外面
  expect(loginPage.contains('Hello')).toBe(true)
})

2. 解决JSX转译失败的核心问题

出现Unexpected token是因为Jest运行测试时,无法识别<LoginPage />这种JSX语法,需要配置Babel来转译测试文件中的React代码:

步骤1:安装必要的Babel依赖

打开终端,安装@babel/preset-react和babel-jest(如果还没安装的话):

npm install --save-dev @babel/preset-react babel-jest

步骤2:配置Babel转译规则

在项目根目录创建或修改.babelrc(或者babel.config.js)文件,添加React和ES6+的转译预设:

{
  "presets": [
    "@babel/preset-env", // 转译ES6+语法
    "@babel/preset-react" // 转译JSX语法
  ]
}

步骤3:确保Jest使用Babel转译

如果你的项目有自定义的Jest配置(比如jest.config.js或者package.json里的jest字段),确认已经设置了正确的transform规则:

// package.json中的示例配置
{
  "jest": {
    "transform": {
      "^.+\\.(js|jsx)$": "babel-jest"
    }
  }
}

做完这些配置后,重新运行测试,应该就能正常识别JSX语法了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:32:04