Есть ли способ автоматически обрабатывать внедрение зависимостей при тестировании с Angular 6? - PullRequest
0 голосов
/ 08 января 2019

Я довольно плохо знаком с юнит-тестами, кармой, жасмином и т. Д., И я действительно не знаю, что я делаю. Я запустил ng test и получил массу неудачных тестов из автоматически сгенерированных тестов, которые создает angular. Оказывается, 99% из них просто отсутствуют зависимости в тестовых сценариях.

Что я не могу понять, так это то, что мне нужно сидеть здесь и смотреть на каждый компонент в моем приложении и заново добавлять зависимости, чтобы я мог получить чистую доску, чтобы начать изучать тестирование. Нет ли у Angular способа добавить все зависимости, необходимые для прохождения автоматически сгенерированных модульных тестов?

1 Ответ

0 голосов
/ 08 января 2019

У вас есть несколько вариантов здесь.

Вы можете либо смоделировать все зависимости первого уровня, либо использовать schemas: [NO_ERRORS_SCHEMA], чтобы игнорировать дочерние компоненты. NO_ERRORS_SCHEMA опасно, хотя. И вам все равно придется издеваться над услугами.

Есть несколько пакетов npm, которые могут помочь, например, Spectator. Вот мое описание того, почему вы должны насмехаться, и как зритель может помочь.

https://medium.com/@fivedicephoto/why-you-shouldnt-use-no-errors-schema-in-angular-unit-tests-cdd478c30782

Но для того, чтобы Angular отображал компонент, даже для теста, он должен удовлетворять зависимостям компонента. Так что нет, настоящего пути нет. Но есть способы снять шаблон всего этого и упростить его.

Я не имею никакого отношения к Зрителю.

[Изменить] Насмешка - это создание поддельного объекта, который удовлетворяет контракту реального. Вы можете издеваться над дочерними компонентами и сервисами, выполняя их контракты. Однако, если у вас много зависимостей, как это обычно бывает с компонентом контейнера, это тоже может быть обременительным.

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