Я пытаюсь написать контрольный пример для следующей функции:
foo = () => {
this.someService.getDetails({key:'value'}).subscribe(details => {
//do stuff
this.someService.getMoreDetails().subscribe(moreDetails => {
//do stuff
});
});
}
Сервис выглядит так:
getDetails = (args) :Observable<any> {
return this.http.post<any>(//calls)
}
// similar for getMoreDetails
Тестовый файл, который я написал, выглядит следующим образом:
const someServiceStub = jasmine.createSpyObj('someService', ['getDetails', 'getMoreDetails']);
...
...
it('should called getMoreDetails', () => {
component.foo();
fixture.detectChanges();
someServiceStub.getDetails.and.returnValue(Observable.of
({ Details: 'Tired of giving you details'})
);
expect(someServiceStub.getMoreDetails).toHaveBeenCalled();
});
Однако мой тестовый пример не дает ошибку «Невозможно прочитать подписку на свойство undefined» (для первой строки внутри функции foo).
Я тоже пытался использовать классы mockservice, но появляется та же ошибка.
Какова возможная причина этого и как я могу ее решить?