Ошибка Jest-теста при синтаксисе tsx

В настоящее время я внедряю в свой проект шутливый тест. Проект состоит из файлов ts + tsx. Ниже приведен мой jest.config.js файл.

module.exports = {
  preset: "ts-jest",
  testEnvironment: "jsdom",
  cacheDirectory: ".jest-cache",
  coverageDirectory: ".jest-coverage",
  coverageReporters: ["html", "text"],
  testMatch: ["**/target/**/components/**/__tests__/**/*.[jt]s?(x)"],
  transformIgnorePatterns: [
    "node_modules/(?!@ngrx|(?!deck.gl)|ng-dynamic)",
    "/app-extensions/"
  ],
  transform: {
    "^.+\\.jsx?$": "babel-jest",
    "^.+\\.ts?$": "ts-jest",
    '^.+\\.tsx?$': "babel-jest"
  },
  moduleNameMapper: {
    "\\.(css|jpg|png|svg)$": "<rootDir>/empty-module.js"
  },
  coverageThreshold: {
    global: {
      branches: 100,
      functions: 100,
      lines: 100,
      statements: 100
    }
  },
};

Но когда я создаю приложение, возникает следующая ошибка. Что я здесь делаю не так? Я попытался преобразовать файлы tsx с помощью ts-jest и babel-jest, но с этой ошибкой все не удалось.

введите здесь описание изображения


person Imesh Chandrasiri    schedule 19.05.2020    source источник


Ответы (1)


Файлы .tsx обрабатываются Babel вместо TypeScript, и Babel не знает о типе : ReactElement.

^.+\\.ts?$ регулярное выражение неверно, потому что оно соответствует файлам .t и .ts, но не .tsx.

Должен быть:

  transform: {
    "^.+\\.jsx?$": "babel-jest",
    '^.+\\.tsx?$': "ts-jest"
  },
person Estus Flask    schedule 19.05.2020