web-dev-qa-db-ja.com

JestはES6のインポート/エクスポートをサポートしていますか?

ES6からimport/exportを使用すると、すべてのjestテストがエラーで失敗します。

予期しない予約語

テスト中のオブジェクトを古い学校のIIFY構文を使用するように変換すると、突然テストに合格します。または、さらに簡単なテストケースを使用します。

   var Validation = require('../src/components/validation/validation');//PASS
   //import * as Validation from '../src/components/validation/validation'//FAIL

同じエラー。ここでインポート/エクスポートに問題があることは明らかです。テストフレームワークを満足させるためだけに、ES5構文を使用してコードを書き換えることは実用的ではありません。

私はバベルジェストを持っています。 githubの問題からさまざまな 提案 を試しました。今のところ行きません。

package.json

 "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"]
}

これに対する修正はありますか?

27
P.Brian.Mackey

から 私の答え から別の質問で、これはより簡単にすることができます:


唯一の要件は、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_。

21
Paulo Coghi

Stage-0を.babelrcファイルに追加するだけです。以下に例を示します。

{
  "presets": ["es2015", "react", "stage-0"],
  "plugins": ["transform-decorators-legacy"]
}
4
Razvan Antalut

babel-jest(デフォルトでjestに付属)をインストールすることに加えて、必ずregenerator-runtimeをインストールしてください。

0
Adam Tuttle