Reactコンポーネントでアセットをインポートする場合(例: "../../../assets/img/logo.pngからロゴをインポート))では、このようなエラーが発生します
({"オブジェクト。":function(module、exports、require、__ dirname、__ filename、global、jest){�PNG
SyntaxError:ScriptTransformer._transformAndBuildScriptでの無効または予期しないトークン(node_modules/jest-runtime/build/script_transformer.js:305:17)
私の冗談の設定は
"jest": {
"testRegex": ".*\\.spec\\.js$",
"moduleFileExtensions": [
"js",
"jsx",
"json"
],
"moduleDirectories": [
"node_modules",
"src",
"assets"
],
"moduleNameMapper": {
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$/": "<rootDir>/__mocks__/fileMock.js",
"\\.(css|less|scss)$": "<rootDir>/__mocks__/styleMock.js"
},
"verbose": true,
"bail": true
}
私は何が欠けていますか?
画像ファイルをインポートすると、Jestは画像のバイナリコードを.jsとして解釈しようとするため、エラーが発生します。
the only way out is to mock a default response anytime jest sees an image import
"jest": {
"moduleNameMapper": {
"\\.(jpg|ico|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
"\\.(css|less)$": "<rootDir>/mocks/fileMock.js"
}
}
すでに
"Jest"
キーがある場合は、それに"moduleNameMapper"
子を追加するだけです
mocks
フォルダを作成し、その中にfileMock.js
ファイルを作成します。以下のスニペットをファイルに入力しますmodule.exports = '';
Note > if you are using es6 you can use export default ''; to avoid an Eslint flag
上記の手順が完了したら、テストを再開できます準備完了です。
注意。画像ファイルのさまざまな拡張子をmoduleNameMapper
に追加して、モックできるようにしてください。
お役に立てれば幸いです。 #乾杯!
Jestをwebpackで使用する場合は、明示的にそのように構成する必要があります。こちらのガイドをご覧ください: http://facebook.github.io/jest/docs/en/webpack.html
IOS @
moduleNameMapper: {
"^image![a-zA-Z0-9$_-]+$": "GlobalImageStub",
"^[@./a-zA-Z0-9$_-]+\\.(png|gif)$": "RelativeImageStub"
}