Угловое тестирование с использованием кармы - PullRequest
0 голосов
/ 29 ноября 2018

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

Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно протестировать часть компонента, и я хочу смоделировать только небольшую часть службы.После насмешек я понял, что большое количество кода, находящегося в ngOnInit, зависит от службы, так что это приводит к тому, что я реплицирую множество кода в MockService, чтобы я мог заставить ngOnInit работать и правильно создавать экземпляр компонента.Но в то же время это много репликации.

Я не хочу высмеивать все, что находится в этом сервисе, только ту часть, которая мне нужна в функции it ().Как мне обойти это?

Есть ли способ, которым я все еще могу создать свой компонент для тестирования, внедрить фиктивный сервис, но при этом it () переопределяет все, что мне нужно?

Я не знаюне хочу создавать MockService, расширяя OriginalService, поскольку я хочу полностью изолировать компонент.

Спасибо.

1 Ответ

0 голосов
/ 30 ноября 2018

Если я понимаю, что вы спрашиваете, то да, это выполнимо.Я собрал Stackblitz , чтобы показать вам один из возможных способов достижения этого.В stackblitz есть простой компонент, который зависит от SomeService.

Как вы можете видеть в файле my.component.spec.ts, я использую шпион для переопределения только той части SomeService, которая необходима для каждой спецификации (функция 'it').

Надеюсь, выможете использовать это как шаблон и изменить для вашей конкретной реализации.

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