Я пытаюсь заставить службу возвращать ошибку.
Я проверяю службу, используя 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