首页 文章

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

提问于
浏览
6

当我尝试用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.011s

4 回答

  • 0

    想出来,基本上抛出在transformIgnorePatterns中使用es6语法的任何节点模块 .

    “transformIgnorePatterns”:[“node_modules /(?!react-native | native-base | react-clone-referenced-element)”],

  • 5

    尝试将transformIgnorePatterns添加到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 .

  • 0

    我发现之前给出的答案并没有解决测试本身的错误,如果它们是用ES6编写的(就像 ignite new MyProject 之后的Ignite CLI创建的样板测试一样) .

    我终于设法通过添加 package.json 中的 test 任务来删除与ES6相关的错误:

    "test": "NODE_ENV=test jest --no-cache"
    

    我正在使用RN 0.45.1 ,Node 7.10.1 (和 8.1.2 ),Yarn 0.24.6 和Jest 20.0.4

    PS:不要总是在控制台中看到这个,但在VS Code v1.13.1 设置 --no-cache 有所不同 .

  • 1

    您在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();
    

相关问题