Тест, сгенерированный angular CLI, не выполняется, если в определенной папке

Я сгенерировал компонент в своей папке компонентов, используя angular CLI (v6.1.4), запустив ng g c components/foo, а затем запустил ng test. Тест нового компонента не проходит из-за следующих ошибок:

Zone is needed for the async() test helper but could not be found. Please make sure that your environment includes zone.js/dist/zone.js thrown

Error: Illegal state: Could not load the summary for directive FooComponent.

Как ни странно, если я запускаю ng g c foo (т.е. он не создается в папке компонентов), тест проходит. Все мои тесты работают для других папок, но это первый тест в моей папке компонентов (а также первый тест для компонента). Ни один из других тестов не является асинхронным.

Я новичок в ng test, поэтому мне может не хватать чего-то очень очевидного. Я не ожидал, что мне понадобится настраивать что-либо с zone.js для запуска теста по умолчанию. Где мне это настроить? Или мне здесь чего-то не хватает, возможно, чего-то особенного для моей папки components?

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
2
0
2 630
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Добавление следующего кода в начало foo.component.spec.ts устранило проблему, но я до сих пор не понимаю, почему тесты работали, если их не было в папке components. Если у кого-то есть объяснение или решение, которое не предполагает повторения этого в тестовом файле каждого компонента, я бы хотел его услышать!

import 'zone.js';
import 'zone.js/dist/async-test.js';
import 'zone.js/dist/proxy.js';
import 'zone.js/dist/sync-test';
import 'zone.js/dist/jasmine-patch';

В моем случае здесь я задавался вопросом, мог ли мой проект быть сгенерирован с другой версией основной тестовой конфигурации, поэтому я создал новый пустой проект с Angular CLI, сравнил обе версии src/test.ts и понял, что этот файл действительно был другим, в моем приложении отсутствовала следующая строка в качестве первой:

import 'zone.js/dist/zone-testing'

После добавления в файл src/test.ts эта ошибка исчезла!

Вероятно, это лучше, чем импортировать все эти файлы js во все спецификации, как предлагает ответ Тима.

Спасибо, Бруно. В моем случае эта строка уже находится в src/test.ts, и если я удалю 5 импортированных из тестового файла, тесты снова прервутся. К сожалению, мне так и не удалось разобраться в этой проблеме.

Tim 16.08.2019 15:26

@ Тим, вы пробовали сравнить свой тест с недавно созданным приложением angular?

BrunoJCM 17.03.2020 08:26

В моем случае эта строка также была в test.ts, но это была не первая строка. Я переместил его полностью вверх, и теперь тесты проходят нормально. Спасибо, @BrunoJCM!

Eddy Verbruggen 04.01.2021 12:48

В дополнение к @BrunoJCMкомментарий выше, который решил мою проблему, организовав импорт в файл test.ts, имейте в виду, что следующие настройки в вашем проекте могут заставить вас снова столкнуться с проблемой, поэтому относительно файла test.ts проверьте следующее:

  1. Деактивировать onSave оптимизировать импорт.
  2. Избегайте запуска Красивее, Украсить или другого средства форматирования стиля кода, которое реорганизует импорт (пакет или плагин).
  3. Проверьте ловушки предварительной фиксации, такие как Хаски, которые форматируют файлы и реорганизуют импорт.

Наслаждайтесь программированием без проблем! : D

Другие вопросы по теме