Исключить файл из компиляции во время тестов кармы - PullRequest
0 голосов
/ 26 ноября 2018

Я использую angular-cli с Karma, и мне нужно исключить определенный файл из компилируемого при запуске модульных тестов.

На указанный файл ссылается в приведенной ниже ошибке, где он не может быть скомпилированиз-за отсутствия модуля он опирается на

enter image description here

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

Моя структура каталогов выглядит следующим образом:

index.ts
    - /src
    - /testing

В моем файле index.ts у меня есть одинexport:

export * from './src/core';

Исходные файлы TS в моей папке testing выбираются компилятором, и я не уверен, почему, поскольку я не импортирую какие-либо файлы в этой папке в файлы под моим srcпапка или что-то еще из того, что я могу сказать.

Я хочу, чтобы компилятор вообще не забрал мою папку тестирования, но я не могу заставить ее игнорировать ее.

Я использую angular-cli, и в моем файле .angular-cli.json у меня есть следующие строки:

"tsconfig": "tsconfig.json",
"testTsconfig": "tsconfig.spec.json"

Оба этих файла находятся в моей папке src, я попытался добавить некоторые шаблоны исключения в свой tsconfigПример:

 karmaTypescriptConfig : {
        tsconfig: '.src/tsconfig.spec.json',
    }

Но, опять же, все равно никаких различий, моя папка тестирования выбирается компилятором при подготовке к запуску моих тестов.

Я не уверен, что еще попробовать, у меня естьобновил мои версии TypeScript (3.1.6) и Karma (3.1.1) до последней версии.

У кого-нибудь есть идеи по поводу того, что здесь происходит?

Спасибо

Ответы [ 4 ]

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

Карма проводит свои испытания на dist directory.Итак, если вы исключите ваш tesing directory, он не попадет в ваш скомпилированный dist directory.

В файле

tsconfig.json

Просто добавьте следующий код

"exclude": [
    "./testing"
]

Написание этого кода должно решить вашу проблему.Дайте мне знать, если это работает.

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

вам нужно добавить файл, который нужно удалить, в файл tsconfig.spec.json

    {
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/spec",
    "types": [
      "jasmine",
      "node"
    ]
  },
  "files": [
    "test.ts",
    "polyfills.ts"
  ],
  "include": [
    "**/*.spec.ts",
    "**/*.d.ts"
  ],
  "exclude": [
    "yourdirectory to file/**/file that does not need to compile in testing"
 ]
}

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

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

В файле

tsconfig.spec.json

Вы можете добавить массив исключений следующим образом:

"exclude": [
"node_modules",
"dist",
"**/tests/*.test.ts",
"src/tests"

]

, поэтому ваш конечный результат будет следующим:

enter image description here

0 голосов
/ 29 ноября 2018

Возможно, ваш путь недостаточно точен.Можем ли мы иметь представление вашего проекта псевдо-дерева?И особенно путь к файлу, который вы хотите исключить?

Файл конфигурации может ожидать что-то вроде этого:

"exclude": [
        "someFolder/**/o3-test-harness.class.ts"
    ]
...