После обновления до Jest 26 и Angular 10 номера строк ошибок модульного теста отображаются неправильно. Я использую Jest с Angular 4 и обновляюсь с каждой новой версией.
Я прочитал все существующие статьи по этому поводу и испробовал все предложения, которые смог найти. Ни один из них не подходит для моей ситуации.
Мне удалось создать минимальное репо, в котором вы можете увидеть, как это происходит (https://github.com/russcarver/angular-jest-test/tree/jest-line-errors). Убедитесь, что вы находитесь на ветке jest-line-errors
. Я добавил комментарии в файл app.component.spec.ts (https://github.com/russcarver/angular-jest-test/blob/jest-line-errors/src/app/app.component.spec.ts), чтобы показать проблемы.
Первый, как ни странно, заключается в том, что я должен добавить фиктивный тест в начало каждого файла спецификации. В противном случае первый тест всегда завершается неудачей в каждом файле:
it('Should init the Test Suite', noop); // ****** The first test fails unless I add this ******
Я создал это решение от отчаяния, когда ничего другое не работало. У меня есть подозрение, что это связано.
Это конкретное обновление Angular также рекомендовало разделить файл tsconfig.json на tsconfig.base.json, tsconfig.app.json и tsconfig.spec.json.
Когда я изменяю различные параметры в tsconfig.spec.json, номера строк ошибок меняются (в частности, с параметрами lib
, module
и target
). Я сократил этот файл до минимума, который мне нужен для моего (большого) проекта, и изменил его в репозитории, чтобы НЕ расширять tsconfig.base.json. Я также изучил и установил параметры, которые, по моему мнению, лучше всего подходят для моего проекта (который нацелен на две последние версии Chrome, Edge Safari и FireFox и использует все последние функции JavaScript и TypeScript).
Я знаю, что это не проблема Angular, поскольку мне удалось воспроизвести это с Angular 9, 10 и 11. До всех изменений tsconfig он работал в Angular 9 и Jest 25.
Я также знаю (проверял), что это не связано с пустыми строками или комментариями в файлах спецификаций.
Я также пробовал конфигурацию Babel безрезультатно.
Раньше я использовал jest-preset-angular
(который сейчас устарел), но добавление/удаление не имеет значения.
Неправильно сообщаются номера строк независимо от того, включено/запущено покрытие или нет.
Мы страдаем от этого с июля прошлого года (2020). Любая помощь будет принята с благодарностью!