У меня есть компонент, который получает параметры id и вызывает службу с этими данными
ngOnInit() {
this.provider = this.activatedRoute.params
.subscribe( params => (
this.dataService.getProvider(params['id']).subscribe( (data:any) => {
this.provider = data;
})
));
}
Я хочу проверить, вызывается ли getProvider, поэтому я создаю такой тест
it('should call getProvider service', () => {
const activatedRoute:ActivatedRouteStub = TestBed.get(ActivatedRoute);
activatedRoute.push({ id: 1 }); //set the id value for params
const service = TestBed.get(DataService);
const spy = spyOn(service,'getProvider').and.returnValue(of({id:1, name: 'Gabriela' }));
component.ngOnInit(); //initialize component
expect(spy).toHaveBeenCalled(); //check if service is called
});
сначала установите идентификатор параметра, а затем выполните шпион для проверки вызова службы.
Но я всегда получаю сообщение об ошибке
Expected spy getProvider to have been called.
Моя проблема в том, что getprovider находится внутри другие подписываются. Если я удаляю первого подписчика, чтобы получить параметр id, все работает нормально.