Angular тестирование службы редактирования с параметрами - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть компонент, который получает параметры 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, все работает нормально.

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