Angular how to Mock HttpRequest/ HttpHeaders

Viewed 22

I have an interceptor which checks if on headers there is a property 'skip'. I'm trying to unit test this. I created a HttpRequest mock for this, but it tells me that get method is undefined (req.headers.get) when I'm trying to test. How can I do it? .ts:

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        if (req.headers.get("skip") === "true") {
            return next.handle(req.clone({headers: req.headers.delete('skip')}));
        }

        return next.handle(req);
    }

.spec.ts:

describe(myInterceptor, () => {

    let interceptor: myInterceptor;
    const httpRequestMock = mock<HttpRequest<any>>();

    beforeEach(() => {
        interceptor = new myInterceptor();
    });

    test('should intercept HTTP calls', () => {
        const httpHandlerMock = {
            handle: jest.fn(() => of(new HttpResponse({status: 200})))
        };

        interceptor.intercept(httpRequestMock, httpHandlerMock);

        expect(...);
    });
0 Answers
Related