5

AVAbabel-preset-react -native を使用して、react-native アプリケーションをテストしようとしています

私の設定は次のようになります:

"scripts": {
  "test": "ava"
},
"ava": {
  "files": [
    "src/**/__tests__/*.js"
  ],
  "failFast": true,
  "require": [
    "react-native-mock/mock.js",
    "babel-register"
  ],
  "babel": {
    "presets": [
      "react-native"
    ]
  }
},
"devDependencies": {
  "ava": "^0.13.0",
  "babel-preset-react-native": "^1.2.4",
  "babel-register": "~6.4.3",
  "react-native-mock": "0.0.6"
}

…そして、次のように失敗します:

/Users/zoon/Projets/xxxxx/node_modules/babel-register/node_modules/babel-core/lib/transformation/file/index.js:556
      throw err;
      ^

SyntaxError: /Users/zoon/Projets/xxxxx/src/reducers/env.js: Unexpected token (12:8)
  10 |     case types.RECEIVE_CHANGE_ENV:
  11 |       return {
> 12 |         ...state,
     |         ^
  13 |         current: Environments[action.env]
  14 |       };
  15 |     default:

このbabel構成を.babelrcファイルにエクスポートし、AVA構成で "babel": "inherit" を使用すると、別の方法で失敗します:

/Users/zoon/Projets/xxxxx/node_modules/lodash-es/lodash.js:10
export { default as add } from './add';
^^^^^^

SyntaxError: Unexpected token export

これを正しく構成する方法がわかりません。私はモカを試しましたが、同じ問題が発生しました。

4

1 に答える 1

3

babel-registerデフォルトでは無視node_modulesされます。その動作を無効にするように設定できignore:falseます。のすべて.babelrc処理することを避けるために、より限定的な正規表現を指定することもできます (おそらくそうするべきです) 。node_modules

ドキュメントを参照してください: https://babeljs.io/docs/usage/require/

完全な構成はおそらく次のようになります。


.babelrc

{
  "presets": ["react-native"],
  "ignore": false
}

パッケージ.json

{
  "ava": {
    "babel": "inherit"
  }
}
于 2016-03-16T19:02:52.337 に答える