Жасмин тестирует сервис - PullRequest
       11

Жасмин тестирует сервис

0 голосов
/ 11 апреля 2019

Я пытаюсь заставить службу возвращать ошибку.

Я проверяю службу, используя rxjs _throw, а затем проверяю, была ли выполнена функция навигации маршрутизатора.

Нофункция навигации маршрутизатора должна срабатывать только в том случае, если объект HttpErrorResponse имеет значение errorMessage: 'Session not found'

Весь объект должен быть {error: {error: errorMessage: 'Session not found'}}}

Я использовал службу mock ранее,но у меня возникают проблемы при получении, чтобы он возвращал ошибку и вел себя так же, как действительная функция в компоненте

Функция компонента:

this.sub = this.addressService.getAddress(postcode.replace(/\s+/g, ''), houseNo)
          .subscribe((response: AddressResponse) => {

            if (response.getAddressFromPostcodeResponse &&
                response.getAddressFromPostcodeResponse.address &&
                response.getAddressFromPostcodeResponse.address.length > 0) {

                  this.yourAddressDetails.addressDetails.placeholder = 'Please select';
                  this.yourAddressDetails.addressDetails.options = this.addressService.setAddressDetails(response.getAddressFromPostcodeResponse.address);
            } else {
                  this.yourAddressDetails.addressDetails.options = [];
                  this._noPostcodeMatch = true;
            }
          }, error => {

                 this.yourAddressDetails.addressDetails.options = [];
                 this.httpPostcodeError = true;

            if (error.error && error.error.errorMessage === 'Session not found') {
                 this.router.navigate([`${this.journeyService.type}/${FeatureType.SessionTimeout}`]);
            }
         });

Тест:

it('should navigate to session-timeout component if no session.', () => {
    mockAddressService.getAddress.and.returnValue(_throw({error : {
      error: {
        errorMessage: 'Session not found'
      }
     }}));
     spyOn(component['router'], 'navigate');
    expect(component['router'].navigate).toHaveBeenCalledWith(['quote/session-timeout']);
  });

В этой части кода компонента httpPostcodeError устанавливаются другие переменные, которые я проверял, чтобы увидеть, установлены ли они, но это не так, так что, похоже, этот оператор не выполняется.

получаю Expected spy navigate was not called

...