意外的导入令牌 - 使用Jest测试React Native

时间:2016-11-10 17:34:54

标签: react-native ecmascript-6 babeljs jestjs

当我尝试用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秒

5 个答案:

答案 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