У меня есть сервис с функцией поиска бразильского почтового индекса. Работает нормально. Но это не моя проблема.
public getAddress(cepAddress: string): Observable<any> {
return this.http.get<any>(`${URL + cepAddress}/json/`).pipe(
map((response: any) => {
return response;
}),
catchError((error: HttpErrorResponse) => {
return throwError(error);
})
);
}
Я пытался проверить ответ об ошибке, но, видимо, у меня нет ошибки. Но когда я открываю консоль, у меня появляется одна ошибка «Uncaught HttpErrorResponse». Это сбивает мой тест и не создает никакого покрытия, потому что это. Я попытался следовать документации angular, в этом url , включая использование asyncError, но безуспешно. Ошибка может быть замечена здесь
Я успешно проверил случай ответа, но случай ошибки мне немного труден.
const ERRORRESPONSE = new HttpErrorResponse({
error: 'test 404 error',
status: 404, statusText: 'Not Found',
url: 'fakeurl'
});
describe('CadastroService', () => {
let httpClientSpy;
let service: CadastroService;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule]
});
httpClientSpy = jasmine.createSpyObj('HttpClient', ['post', 'get']);
service = new CadastroService(httpClientSpy as any);
// service = new CadastroService(<any> httpClientSpy);
});
it('should test getAddress error', () => {
httpClientSpy.get.and.returnValue(throwError(ERRORRESPONSE));
service.getAddress('09890430').subscribe((response) => {
fail('getAddress error expected');
}), (error: HttpErrorResponse) => {
expect(error.status).toEqual(404);
expect(error.error).toEqual('test 404 error');
};
});
});
Версии приложений
"@angular/core": "9.0.6",
"jasmine": "^3.5.0",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
У меня есть приложение с очень похожей функцией и тестом, которые работают нормально, но это не так. Я бы хотел пройти тест по ошибке.
Спасибо