无法运行Jest测试用例:React组件测试JSX解析报错
解决Jest测试React组件时JSX解析报错的问题
你碰到的这个Unexpected token错误完全是因为Jest没法解析测试代码里的JSX语法——虽然你已经装了babel-jest,但缺少正确的Babel配置来处理React的JSX转译。咱们一步步来解决:
1. 安装必要的Babel预设
首先得安装处理React和ES语法的Babel预设,在终端运行:
npm install --save-dev babel-preset-react babel-preset-env
2. 添加Babel配置文件
在项目根目录新建一个.babelrc文件,写入以下配置,告诉Babel怎么转译你的代码:
{ "presets": ["env", "react"] }
这个配置会让Babel用env预设处理ES6+语法,用react预设处理JSX语法。
3. 适配Enzyme与React版本
你用的是Enzyme 3.x,它需要对应React版本的适配器才能正常工作。先查看package.json里的react依赖版本,比如如果是React 16.x,就安装对应的适配器:
npm install --save-dev enzyme-adapter-react-16
然后在你的测试文件开头加上适配器配置(也可以在Jest的全局setup文件里配置,避免每个测试都重复写):
import Enzyme from 'enzyme'; import Adapter from 'enzyme-adapter-react-16'; Enzyme.configure({ adapter: new Adapter() });
4. 修正测试用例的小细节
你的测试里show=true的写法不太规范,JSX里的布尔属性建议用大括号包裹(虽然简写也能生效,但统一写法更清晰),改成:
const component = shallow(<ThankYouPage show={true} />);
做完这些步骤后,再运行npm test应该就能正常解析JSX,顺利通过测试了。
内容的提问来源于stack exchange,提问作者comiventor
相关产品推荐
相关产品推荐

