Как мне проверить ловлю ошибок HTTP в Angular - PullRequest
0 голосов
/ 15 марта 2019

У меня есть функция, как показано ниже в Angular:

getData(payload):any {
  return this.http.post(url,payload).catch(err => this.handleError());
}

Как мне написать тестовый пример для входа в блок catch с использованием Jasmine?

1 Ответ

0 голосов
/ 15 марта 2019

Вам нужно использовать шпионов Жасмин.Это выглядело бы примерно так:

describe('when there is an error', () => {
  beforeEach(() => {
    const error = new Error()
    spyOn(http, 'post').and.returnValue(of(error));
    spyOn(service, 'handleError').and.callThrough();

    service.getData({});
  });

  it('should handle the error', () => {
    expect(service.handleError).toHaveBeenCalled();
  });
})

Шпионы Жасмин позволяют нам высмеивать возвращаемое значение, например, ошибку из HTTP-запроса, и тестировать альтернативные пути в нашем коде.Это то, что делает returnValue.

callThrough просто говорит Жасмин следить за вызовами фактической реализации функции.В случае handleError мы просто хотим быть уверенными, что он запускается при возникновении ошибки.

Все, что делает toHaveBeenCalled, возвращает true, если наш шпион действительно был вызван.

Там также toHaveBeenCalledWith где вы можете проверить, чтобы ваш код вызывался с конкретными аргументами.В этом случае, возможно, вы действительно хотите передать объект ошибки в handleError.

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