[解決済み] JestはES6のインポート/エクスポートをサポートしていますか?
2022-07-18 22:52:18
質問
もし私が
import/export
を使用した場合、Jestのテストはすべてエラーで失敗します。
予期しない予約語
テスト中のオブジェクトを変換して、古い形式の IIFE 構文に変換すると、突然テストが通ります。あるいは、もっと単純なテストケースを考えてみましょう。
var Validation = require('../src/components/validation/validation'); // PASS
//import * as Validation from '../src/components/validation/validation' // FAIL
同じエラーです。明らかに、インポート/エクスポートに問題があります。テストフレームワークを満足させるために、ES5構文を使用して私のコードを書き直すことは現実的ではありません。
私はbabel-jestを持っています。私はさまざまな の提案 をGitHubのissueから試してみました。 今のところダメです。
ファイル パッケージ.json
"scripts": {
"start": "webpack-dev-server",
"test": "jest"
},
"jest": {
"testPathDirs": [
"__tests__"
],
"testPathIgnorePatterns": [
"/node_modules/"
],
"testFileExtensions": ["es6", "js"],
"moduleFileExtensions": ["js", "json", "es6"]
},
ファイル babelrc
{
"presets": ["es2015", "react"],
"plugins": ["transform-decorators-legacy"]
}
これの修正方法はあるのでしょうか?
どのように解決するのですか?
UPDATE 2020 - ECMAScript モジュール (ESM) のネイティブ サポート。
によると
この問題
からの ESM のネイティブサポートがあります。
[email protected]
. ですから、もうバベルを使う必要はないでしょう。この回答を書いている時点(2020年5月)では、これを有効にするには、3つの簡単なことを行う必要があります。
-
トランスフォームしないことを確認します。
import
ステートメントをtransform: {}
を設定します。 -
実行する
node@^12.16.0 || >=13.2.0
で--experimental-vm-modules
フラグ -
テストを実行するには
jest-environment-node
またはjest-environment-jsdom-sixteen
.
というわけで、Jestの設定ファイルには最低限このような内容が含まれている必要があります。
export default {
testEnvironment: 'jest-environment-node',
transform: {}
...
};
そして
--experimental-vm-modules
フラグを設定するには、以下のようにJestを実行する必要があります。
node --experimental-vm-modules node_modules/jest/bin/jest.js
また、Github の課題では、この方法はまだ
jest
オブジェクトをサポートしていません。そのため、手動でインポートする必要があるかもしれません。
import {jest} from '@jest/globals'
( 将来的に変わることを期待しています )
関連
-
[解決済み] ES6インポートで中括弧を使用するのはどのような場合ですか?
-
[解決済み] Jestを使用してES6モジュールのインポートをモックするにはどうすればよいですか?
-
[解決済み】Node.jsのrequireとES6のimport/exportを使い分ける。
-
[解決済み】Babel 6がデフォルトのエクスポート方法を変更しました。
-
[解決済み] es6 で配列の最後の要素を取得するためのデストラクション
-
[解決済み] ES6 ゲッター/セッターとアロー関数
-
[解決済み] babel-preset-stage-0, babel-preset-stage-1 などはどう違うのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン