Добавление окружающих объявлений TypeScript только к определенным файлам (например, * .spec.ts) - PullRequest
0 голосов
/ 18 февраля 2019

Файл My Jest setupTests определяет ряд глобальных идентификаторов (например, global.sinon = sinon, но ввод их в объявлениях окружения применяется ко всем файлам, а не только к *.spec.ts, в который включен файл setupTests. Ранее я 'Мы решили эту проблему с помощью отдельного файла tsconfig.json для каталога tests, но это невозможно, если тестовые и не тестовые файлы находятся в одном и том же каталоге. Есть ли способ получить окружающие объявления, которые применяются только кконкретный шаблон имени файла? Примерно так:

declare module "*.spec.ts" {
    // declarations here
}

1 Ответ

0 голосов
/ 10 марта 2019

Вы не можете решить эту проблему следующим образом:

declare module "*.spec.ts" {
  /* ... */
}

, потому что именно так вы описываете содержимое всех *.spec.ts файлов, а не среду, в которой они выполнялись.

Лучше всего, если вы сможете отделить исходный код от тестов и использовать два отдельных файла tsconfig.json.Если вам необходимо смешать исходный код и тесты, единственная опция, которая приходит вам в голову, - это создать файл объявления вне ваших включенных файлов и импортировать его вручную в каждый тестовый файл.Например, вы можете создать каталог с именем environment в корне вашего проекта и поместить туда файл test.d.ts.

./environment/test.d.ts

declare const foo: string;

Теперь каждый тест, который зависит от глобального foo, должен ссылаться на environment/test.d.ts.

./path/to/foo.spec.ts

import '../environment/test';

console.log(foo);

Это громоздко, ноЯ не нашел лучшего способа обслуживания разных глобальных файлов для разных файлов.Обычно люди просто загрязняют свое глобальное пространство имен всеми имеющимися глобальными объектами (узел, браузер, тесты).

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