Angular - модульный тест HttpErrorResponse с пользовательскими заголовками (HttpClientTestingModule) - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть следующий код, в котором я ищу специальный заголовок при ошибке:

login(credentials: Credentials): Observable<any> {
    return this.http.post(loginUrl, credentials)
        .pipe(
            catchError((httpErrorResponse: HttpErrorResponse) => {
                let error = new Error('', httpErrorResponse.status);

                ...
                if (httpErrorResponse.headers.get('customHeaderName')) {
                    error.message = 'Appropriate Response';
                }
                ...
                return throwError(error);
            })
        );
}

Я использую HttpClientTestingModule и пытаюсь проверить это следующим образом:

it('should catch error with custom header', (done) => {
    authService.login(credentials)
        .subscribe({
            next: null,
            error: (error: Error) => {
                expect(error.message).toEqual('Appropriate Response');
            }
        });

    httpMock.expectOne({
        url: apiUrl,
        method: 'POST'
    }).flush([], {status: 403, statusText: 'Forbidden', headers: {'customHeaderName': 'customHeaderValue'}});

    done();
});

Не уверен, где проблема, но status и statusText проходят как положено, но заголовки не включены, поэтому блок if не активирован.

Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...