Вам нужно использовать шпионов Жасмин.Это выглядело бы примерно так:
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
.