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

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

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

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

Я использую:

  • Конфигурация веб-пакета без CRA
  • Шутка v23.6.0
  • вавилонское ядро ​​6.26.3
  • машинопись 3.1.3
  • ц-шутка 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
    }
  }
};

person jktravis    schedule 10.12.2018    source источник


Ответы (1)


Получил это работает, наконец. Проблема заключалась в том, что в проекте использовался 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
  ],

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

person jktravis    schedule 11.12.2018
comment
У меня такие же проблемы! Не могли бы вы опубликовать часть содержимого других файлов конфигурации? - person JustinHui; 01.06.2021