У меня есть тест для теста для файла TSX, записанного в файле JSX, который не запускается из-за неожиданного токена:
Test suite failed to run
Jest encountered an unexpected token
This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.
By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".
У меня есть другой тест, написанный на JSX для файла JSX, который выполняетзапустить.Я использую React Testing Library, но не думаю, что это проблема, так как тест не удается выполнить импорт файла.
Трассировка стека:
ReactApp\node_modules\@babel\runtime\helpers\esm\objectWithoutPropertiesLoose.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){export default function _objectWithoutPropertiesLoose(source, excluded) {
^^^^^^
SyntaxError: Unexpected token export
at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
at Object.<anonymous> (node_modules/react-spring/renderprops.js:7:53)`
Конфигурация Jest:
"jest": {
"preset": "ts-jest/presets/js-with-babel",
"transformIgnorePatterns": [
"<rootDir>/node_modules/(?!lodash-es)"
],
"globals": {
"ts-jest": {
"babelConfig": {
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
}
}
},
"moduleFileExtensions": [
"jsx",
"tsx",
"js",
"ts",
"json"
],
"moduleNameMapper": {
"/^.+.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/config/jest/file.stub.js",
"^.+.(scss\\?m)$": "identity-obj-proxy",
"^.+.(scss|less|css)$": "<rootDir>/config/jest/css.stub.js"
},
"testPathIgnorePatterns": [
"<rootDir>/(config|generators|node_modules|webpack-build-config)/"
],
"coveragePathIgnorePatterns": [
"<rootDir>/(config|generators|node_modules|webpack-build-config)/"
]
}
Конфигурация TS:
{
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"alwaysStrict": true,
"jsx": "preserve",
"lib": ["esnext", "dom"],
"module": "esnext",
"moduleResolution": "node",
"noEmit": true,
"esModuleInterop": true
},
"exclude": ["node_modules"]
}
Импорт из неудавшегося test.jsx:
(Компонент - файл TSX)
import React from 'react';
import '@testing-library/jest-dom/extend-expect'
import { render } from '@testing-library/react';
import Component from './Component';