У меня есть метод ngOnInit
для моего компонента, который выглядит примерно так:
public ngOnInit(): void {
this.subscription = this.myService.myGetter.subscribe(...);
}
Я пытаюсь протестировать этот метод, высмеивая мой сервис и следя за моим геттером.Например, мой смоделированный сервис выглядит следующим образом:
export class MockedService {
public get myGetter(): Subject<MyData[]> {
return;
}
}
Внутри моей конфигурации TestBed в моей тестовой спецификации я включаю смоделированный сервис в массив моих провайдеров и внедряю сервис:
{ provide: MyService, useClass: MockedService }
let myService = fixture.debugElement.injector.get(MyService);
Затем в моем реальном тесте я шпионю за этим свойством и возвращаю ожидаемое значение:
const serviceSpy: jasmine.Spy = spyOnProperty(myService, 'myGetter', 'get').and.returnValue(Observable.of(sampleData));
Когда приходит время проверить метод, я продолжаю получать:
Невозможно подписать готовое свойство на неопределенное
Я не уверен, почему это происходит.Я слежу за свойством и возвращаю Observable, чтобы за ним следили.
Если я попытаюсь изменить return
в моем MockedService на что-то другое (вернуть фактическое значение, скажем, строку),кажется, что это работает, потому что сообщение об ошибке позволяет мне знать, что subscribe
не существует на myGetter
.
Есть идеи?