У меня есть служба, которая возвращает значения, предоставляемые селекторами ngrx, и компонент, который определяет эту службу, внедряет ее и устанавливает свойства на основе значений, возвращаемых службой.
Я пишу модульные тесты для компонента, использующего макет сервиса, и мне нужен сервис макета, чтобы возвращать разные значения для каждого модульного теста.
Чтобы сделать это, я определил фиктивный класс обслуживания, чтобы он возвращал предметы вместо наблюдаемых. Тесты выполняются, но TS выдает ошибку, говоря, что интерфейс фиктивного сервиса не соответствует интерфейсу реального сервиса, так как реальный сервис возвращает наблюдаемые.
Stackblitz
Stabblitz работает и тесты выполняются правильно, но, как вы видите, TS выдает ошибку
TS2339: свойство 'next' не существует для типа 'Observable'
Я нашел, что могу добавить
// @ ts-ignore
над каждым вызовом .next (), чтобы компилятор TypeScript игнорировал ошибку, но это не лучшее решение.
Может быть, есть лучший способ полностью смоделировать службу, чтобы она по-прежнему возвращала наблюдаемые, но я могу возвращать разные значения для каждого модульного теста?