Тест, сгенерированный угловым CLI, терпит неудачу, если в определенной папке - PullRequest
0 голосов
/ 27 сентября 2018

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

Зона необходима для помощника по тестированию async (), но не может быть найдена.Убедитесь, что ваша среда включает zone.js / dist / zone.js thrown

Ошибка: недопустимое состояние: не удалось загрузить сводку для директивы FooComponent.

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

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

Ответы [ 2 ]

0 голосов
/ 16 августа 2019

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

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

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

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

0 голосов
/ 27 сентября 2018

Добавление следующего в начало 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';
...