我正在处理最近从旧的Webpack构建转换为使用 create-react-app
的应用程序 . 大多数过渡进展顺利,但我遇到了以前单元测试的一些主要问题 . 当我运行 npm test
,它具有 "test": "react-scripts test --env=jsdom"
的标准package.json测试脚本时,它表示我的所有快照测试都失败了 . 这是很好的和预期的,因为已经有很多变化,测试需要更新 .
但是,当我刚运行 jest
或 jest --updateSnapshot
时,我的所有测试都会立即失败并出现 SyntaxError: Unexpected token
错误,其中大多数错误与 import
有关 . 这让我相信Jest没有使用Babel来正确转换ES6语法 .
以前,我们使用带有以下设置的.babelrc文件:
{
"presets": ["env", "react", "stage-0", "flow"],
"plugins": ["transform-runtime", "add-module-exports", "transform-decorators-legacy"]
}
但由于Babel已包含在 create-react-app
中,我删除了此文件以及对Babel的任何引用 . 我的package.json也没有为Jest本身设置任何特殊脚本 .
我已经尝试过添加一些以前使用过的Babel软件包了,但是在进一步阅读之后看起来似乎无论如何这些都不会起作用,除非我从 create-react-app
弹出并且这不是一个选项 .
什么会导致 npm test
正确运行但 jest
失败?
1 回答
事实证明这是一个巴别塔问题 . 即使
create-react-app
已预配置,我们仍然需要添加自定义配置,因为我们的应用程序最初并非使用cra
构建 . 我安装了一些新的dev依赖项:并且还更新了
.babelrc
:现在,
jest
和_1346351都可以正常工作 .