当我尝试用jest测试我的react-native应用程序时,我遇到了一个奇怪的导入错误。我已经安装了babel-jest,babel-preset-react-native,jest,jest-react-native和react-test-render,但是当我运行npm test时会收到此错误消息。
●测试套件无法运行
/Users/maftalion/www/stars20/kiosk/node_modules/native-base/index.js:4
import Drawer from './Components/vendor/react-native-drawer';
^^^^^^
**SyntaxError: Unexpected token import**
at transformAndBuildScript (node_modules/jest-runtime/build/transform.js:316:10)
at Object.<anonymous> (src/routes/Identification.js:3:17)
at Object.<anonymous> (src/routes/router.js:4:21)
测试套房:1次失败,1次通过,共2次 测试:1次通过,共1次 快照:1次通过,共1次 时间:1.011秒
答案 0 :(得分:6)
想出来,基本上抛出在transformIgnorePatterns中使用es6语法的任何节点模块。
&#34; transformIgnorePatterns&#34;:[ &#34; node_modules /(?反应天然|天然基|反应克隆引用元素)&#34; ],
答案 1 :(得分:1)
尝试将https://msdn.microsoft.com/ko-kr/library/dd948895(v=office.12).aspx添加到package.json:
{
"name": "MyAwesomeApp",
...
"jest": {
"transformIgnorePatterns": ["/node_modules/"]
}
}
对我来说,Jest开箱即用,但是:
$ react-native init MyAwesomeApp
$ cd MyAwesomeApp
$ npm test
...
Tests: 2 passed
我使用的是React Native v0.37.0。
答案 2 :(得分:0)
我发现之前给出的答案并没有解决测试本身的<{1}}错误 ,如果它们是用ES6编写的(就像Ignite CLI创建的样板测试一样)在Unexpected token import
)之后。
我最终通过添加ignite new MyProject
中的test
任务设法删除了与ES6相关的错误:
package.json
我正在使用RN "test": "NODE_ENV=test jest --no-cache"
,节点0.45.1
(和7.10.1
),Yarn 8.1.2
和Jest 0.24.6
PS:不要总是在控制台中看到这一点,但在VS代码中20.0.4
设置v1.13.1
会有所不同。
答案 3 :(得分:0)
您在webpack config中配置了Babel,这仅适用于webpack。当其他工具(如Jest)使用Babel时,他们不会看到该配置,因为他们不会查看webpack配置。您可以使用.babelrc文件来配置Babel,这将适用于运行Babel(不仅仅是webpack)的任何内容。
使用。babelrc通常是首选,因为您希望拥有一般的babel配置,如果您需要覆盖设置,您仍然可以在特定应用程序中执行此操作,例如在webpack配置中。
创建以下.babelrc:
{
"presets": ["es2015", "react"]
}
这样,您可以删除webpack配置中的presets选项,因为它将使用.babelrc。请注意,[cacheDirectory选项] [3]特定于babel-loader,不用于配置基础Babel。
您的测试中也有拼写错误,toMatchSnapShot()应该是toMatchSnapshot()。
expect(rendered.toJSON()).toMatchSnapshot();
答案 4 :(得分:0)
我需要添加.babelrc与:
{
"presets": ["@babel/env","@babel/react"]
}
我还需要安装此模块
npm install add --dev react-test-renderer