Противоречивые типы, используя шутку рядом с кармой, жасмин на Angular - PullRequest
2 голосов
/ 25 октября 2019

Фон

Я работаю над проектом, который возник как проект angular.js. В настоящее время мы переносим все на Angular. Это означает, что у нас есть устаревшие модульные тесты для Angular.js, которые в конечном итоге будут удалены. Для Angular мы перенесли все тесты в Jest.

Проблема

Проблема возникает при попытке использовать оба Karma and Jasmine как Jest в проекте. Устаревшие модульные тесты связаны с собственным файлом tsconfig, и они отлично работают. Кажется, что обе библиотеки добавляют одни и те же функции в глобальную среду, и тесты Jest продолжают разрешать типы Jasmine. Если я удаляю Karma and Jasmine из проекта, все тесты работают нормально.

Вопрос

Как можно исключить jasmine's типы, такие как expect при запускеJest без удаления karma and jasmine из проекта в целом?

Я пробовал

У меня есть отдельный файл tsconfig.spec для тестов Jest, на которые я ссылался вфайл jest.config.js. В этом я попытался добавить только нужные типы. Который я думал только загрузит node_modules/@types/<included>. Но он все равно будет включать жасмин.

  "compilerOptions": {
    "types": ["node", "jquery", "jest"],

Я также пытался включить их через typeRoots, но это только дает мне больше ошибок, таких как: error TS2708: Cannot use namespace 'jest' as a value..

{
  "compilerOptions": {
    "outDir": "../out-tsc/spec",
    "typeRoots": [
      "../node_modules/@types/jest"
      ...
    ],
    "baseUrl": ".",
    "paths": {
      "*": ["./*"]
    },
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "target": "es5",
    "emitDecoratorMetadata": true,
    "esModuleInterop": true,
    "allowJs": true
  },
  "files": ["polyfills.ts"],
  "include": ["./app/**/*.spec.ts"]
}

Почему-то я не могу заставить TypeScript игнорировать node_modules/@types/jasmine. Любая помощь или указатели будут с благодарностью.

...