Используя Jest, я получаю: не могу найти файл определения типа для 'jasmine' - PullRequest
7 голосов
/ 23 апреля 2019

Я использую Angular 7 и Jest. Когда я запускал jest с --codecoverage, все мои тесты прошли, но многие ветви в конструкторе не были охвачены (аналогично: Ветви на конструкторе не покрыты ).

Я потратил довольно много времени, проверяя везде, как решить эту проблему, и мне показалось, что мне пришлось обновить jest-preset-angular до версии 7. После этого все мои тестовые наборы не запускаются со следующим сообщением:

src/app/whatever.component.spec.ts
 ● Test suite failed to run

 TypeScript diagnostics (customize using `[jest-config].globals.ts-jest.diagnostics` option):
 error TS2688: Cannot find type definition file for 'jasmine'.

Я искал и пытался применить найденные решения (например, Не удалось найти файл определения типа для 'jasmine' , ОШИБКА в ошибке TS2688: Невозможно найти файл определения типа за «шутку» , ...) но никто не работал.

Я копирую здесь некоторые зависимости, которые у меня есть в package.json:

    "jest": "^24.1.0",
    "jest-junit": "^6.3.0",
    "jest-preset-angular": "^7.0.1",
    "ts-node": "~7.0.1",
    "tslint": "~5.9.1",
    "typescript": "3.2.4"

Моя предыдущая версия была:

    "jest-preset-angular": "^6.0.2",

Я не знаю, какую дополнительную информацию я могу предоставить. Если чего-то не хватает, я был бы признателен, если бы вы могли сказать мне это до (фактически: вместо) голосования вниз ...

Обновление: Я начал свой проект с Angular 6 и Jasmine и обновил его до Angular 7 и Jest. Я не знаю, является ли это важной информацией.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 21 июня 2019

Перейдите к tsconfig.spec.json в поле типов под compilerOptions, удалите жасмин и добавьте jest

"compilerOptions": {
"module": "commonjs",
"outDir": "./out-tsc/spec",
"types": ["jest", "node"]
}
0 голосов
/ 27 июня 2019

Я наконец решил свою проблему. Решение основано на ответе @Emmy Omega (именно поэтому я даю ему награду) и комментарии @Akshay Rana, но пришлось сделать еще кое-что. У меня действительно было jasmine в моем tsconfig.spec.json файле, но изменение его на json (я уже пробовал) не решило проблему. Чтобы это работало, я сделал следующие шаги:

Обновление npm (у меня была старая версия, и у меня были некоторые проблемы при установке пакетов).

Удалить все связанные с Кармой вещи , которые все еще были там:

npm remove karma karma-chrome-launcher karma-coverage-istanbul-reporter karma-jasmine karma-jasmine-html-reporter

• У меня все еще был этот test.ts файл, и я удалил его (я не знаю, откуда он взялся). Я также удаляю его из tsconfig.app.json и tsconfig.spec.json.

• В tsconfig.spec.json я изменил одно вхождение jasmine на jest (как предложено).

• Обновлено package.json с "jest-preset-angular": "^7.0.1

• Удалите все пакеты в папке node_modules и заново установите их все с помощью npm i.

Я не знаю точно, какой из этих шагов имел значение, но в конце концов это сработало!

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