Невозможно протестировать любой код с помощью модуля openlayers в Jest - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь написать несколько тестов для некоторых модулей, которые случайно импортируют модуль openlayers или два.Но, как обнаружили некоторые другие ( здесь , здесь и здесь ), это не работает "из коробки".Вот что я пробовал:

  • переименование .babelrc в babel.config.js и экспорт конфигурации
  • добавление transformIgnorePatterns в мой jest.config.js

Я просто в растерянности, что бы исправить это сейчас.

Я использую:

  • Конфигурация веб-пакетов без CRA
  • Jest v23.6.0
  • babel-core 6.26.3
  • машинописный текст 3.1.3
  • ts-jest 22.4.6

Вот мои конфиги:

Шутка:

module.exports = {
  setupFiles: [
    "./testConfig/test-shim.js",
    "./testConfig/test-setup.js"
  ],
  transform: {
    "^.+\\.tsx?$": "ts-jest"
  },
  transformIgnorePatterns: [
    "/node_modules/(?!(ol)/).*/",
    "node_modules/(?!(ol)/)",
  ],
  testRegex: "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx|tsx?)$",
  moduleNameMapper: {
    "^(Controllers|Api|Utilities)/(.*)$": "<rootDir>Scripts/$1/$2"
  },
  moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"],
  coverageReporters: ["text", "text-summary", "html"],
  coverageDirectory: "testConfig/coverageReport",
  collectCoverageFrom: ["**/Scripts/{App,Controllers,Utilities,Localization,EntryPoints}/**/*.{ts,tsx}"],
  coverageThreshold: {
    global: {
      branches: 0,
      functions: 0,
      lines: 0,
      statements: 0
    }
  }
};

1 Ответ

0 голосов
/ 11 декабря 2018

Понял, наконец, это работает.Проблема заключалась в том, что в проекте использовался TypeScript, и, как обычно, это усложняло ситуацию.

Поскольку исходные коды OL нужно было компилировать, а эти файлы были написаны на JavaScript, мне нужно было добавить другое преобразование в мою конфигурацию, чтобы просто обрабатывать эти файлы.После этого он пожаловался на холст, поэтому мне пришлось также установить макет холста.

Таким образом, измененная часть моей конфигурации выглядит следующим образом:

  setupFiles: [
    "./testConfig/test-shim.js",
    "jest-canvas-mock", // <- the new mock
    "./testConfig/test-setup.js"
  ],
  transform: {
    "^.+\\.tsx?$": "ts-jest",
    "^.+\\.jsx?$": "babel-jest", // <- also compile js/x files
  },
  testRegex: "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
  transformIgnorePatterns: [
    "node_modules/(?!(ol)/)", // <- exclude the OL lib
  ],

Надеюсь, это поможет кому-то еще!

...