Тест React Jest не запускается с помощью ts-jest - неожиданный токен в импортированном файле - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть тест для теста для файла 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';
...