ES6からimport/export
を使用すると、すべてのjestテストがエラーで失敗します。
予期しない予約語
テスト中のオブジェクトを古い学校のIIFY構文を使用するように変換すると、突然テストに合格します。または、さらに簡単なテストケースを使用します。
var Validation = require('../src/components/validation/validation');//PASS
//import * as Validation from '../src/components/validation/validation'//FAIL
同じエラー。ここでインポート/エクスポートに問題があることは明らかです。テストフレームワークを満足させるためだけに、ES5構文を使用してコードを書き換えることは実用的ではありません。
私はバベルジェストを持っています。 githubの問題からさまざまな 提案 を試しました。今のところ行きません。
"scripts": {
"start": "webpack-dev-server",
"test": "jest"
},
"jest": {
"testPathDirs": [
"__tests__"
],
"testPathIgnorePatterns": [
"/node_modules/"
],
"testFileExtensions": ["es6", "js"],
"moduleFileExtensions": ["js", "json", "es6"]
},
{
"presets": ["es2015", "react"],
"plugins": ["transform-decorators-legacy"]
}
これに対する修正はありますか?
から 私の答え から別の質問で、これはより簡単にすることができます:
唯一の要件は、test
環境をBabelに設定し、es2015変換プラグインを追加することです。
ステップ1:
test
環境をプロジェクトのルートの_.babelrc
_に追加します。
_{
"env": {
"test": {
"plugins": ["@babel/plugin-transform-modules-commonjs"]
}
}
}
_
ステップ2:
Es2015変換プラグインをインストールします。
_npm install --save-dev @babel/plugin-transform-modules-commonjs
_
そしてそれだけです。Jestは、jest
プロパティに追加オプションを通知することなく、ESモジュールからCommonJSへのコンパイルを自動的に有効にします_package.json
_。
Stage-0を.babelrcファイルに追加するだけです。以下に例を示します。
{
"presets": ["es2015", "react", "stage-0"],
"plugins": ["transform-decorators-legacy"]
}
babel-jest
(デフォルトでjestに付属)をインストールすることに加えて、必ずregenerator-runtime
をインストールしてください。