create-react-appで作成したアプリケーションをテストすることはできませんが、すべてのガイドでテストがデフォルトで機能していると記載されていますが、「yarn test」を試すとインストール「jest-cli」が必要で、インストール後にエラー「TypeError:environment。分解は機能ではありません」。
Jest-cliを自分でインストールする必要はありません。すぐに使用できるはずです。
以下を試してください:
npm install
またはyarn install
。「jest-environment-jsdom」の最新バージョンを「package.json」に追加します。
私の場合、create-react-app
を使用して反応プロジェクトを作成し、jest
をインストールするため、このエラーがスローされます。特定の方法で競合します。
プロジェクトからjest
を削除し、create-react-app
テストスクリプトを使用して解決します。
プロジェクトにcreate-react-app
を使用していない場合:
jest, jest-cli, jest-environment-jsdom
からpackage.json
を削除するだけです。npm --save i
またはyarn add
を使用してすべてをインストールし、それぞれが同じバージョンになるようにします。これは動作するはずです!
私の場合、jest-environment-jsdom
パッケージがありませんでした。
この問題について私の頭を叩いた夜の後、私は最終的にそれを解決したと思います。まず、問題を説明しましょう。
私も得ていました:
TypeError: environment.teardown is not a function
Jestを最新バージョンにアップグレードしようとしていたからです。 Create-React-Appでアプリを起動すると、すべての機能を含まないjestの以前のバージョンがインストールされます。テストファイル内のHTMLマークアップに対してレンダリングされたコンポーネントをアサートできるinlineSnapshots機能の使用に興味がありました。
Create-React-Appまたはjestのドキュメントに含まれていないいくつかの注意事項があります。 inlineSnapshotsなどの新しいjest機能を使用する場合は、次の操作を行う必要があります。
Docblockは、プラグママーク「@」が付いたJSブロックコメントです。 jest環境を設定するには、これをすべてのテストファイルの先頭に追加します。
/**
* @jest-environment jsdom
*/
これはjestにjsdom環境でテストを実行するように指示します。これは、package.jsonのテストスクリプトセクションで渡されたものと一致する必要があります。私のものは次のようになります(react-app-rewiredでパーツを無視します):
"scripts": {
"start": "yarn run flow && react-app-rewired start",
"build": "yarn run flow && react-app-rewired build",
"test": "react-scripts test --env=jsdom"
}
これらすべてを行った後、私はようやくインラインスナップショットを機能させることができました。
私にとっては、モジュールインポートバインディングでした。基本的に私にとっては、モジュールのエクスポート/インポートバインディングでした。
基本的に、module.export
を使用してエクスポートされた場合、require
を使用してインポートする必要があります。 export
またはexport default
を使用してエクスポートされた場合、import
を使用してインポートする必要があります。
ここでは混合は許可されていません。