I need help for code coverage for handle error in my passenger-detail.service.specs.ts
below is my code from passenger detail service
import { Injectable } from "@angular/core";
import { Observable, catchError, throwError } from "rxjs";
import {
HttpClient,
HttpErrorResponse,
HttpHeaders,
} from "@angular/common/http";
import { AuthCookiesService } from "@britishairways-ent/cookie";
import { environment } from "src/environments/environment";
import { PassengerApis } from "src/app/interfaces/apis-passenger.interface";
@Injectable({
providedIn: "root",
})
export class PassengerDetailsService {
constructor(
private http: HttpClient,
private authCookiesService: AuthCookiesService
) {}
addApisData(passengerDetails: PassengerApis): Observable<any> {
const url = environment.SAVE_APIS;
return this.http
.post(url, passengerDetails, {
observe: "response",
headers: new HttpHeaders({
"Content-Type": "application/json",
Authorization:
"Bearer " + this.authCookiesService.getPublicAccessToken(),
}),
})
.pipe(catchError(this.handleError));
}
handleError(error: HttpErrorResponse) {
if (
error.error &&
typeof error.error.code !== "undefined" &&
typeof error.error.description !== "undefined"
) {
return throwError(() => error.error.code);
}
}
}
I am getting an alert saying function not covered and statement not covered.
you could test for various error response codes like, 401, 403, 404, 500. And then in your handleError you could act differently on each scenario, if you like.
setup your spec with httpTestingController and import HttpClientTestingModule