Как проверить, если ошибка возникла в функции обработки ошибок в Жасмин - PullRequest
0 голосов
/ 28 апреля 2020

В моем приложении Angular у меня есть компонент, который подписывается на наблюдаемое и в методе подписки присваивает возвращаемое значение свойству. В случае сбоя запроса я хочу сбросить значение в компоненте и передать ошибку глобальному обработчику ошибок (который мы реализовали сами и позаботимся об уведомлении пользователя).

someFunction(): void {
   const myObservable = this.service.someFunction(); //simplified; in the actual code there are some ifs and elses that determine which function is actually called
   myObservable.subscribe(
        (response) => {
            this.result= response;
        },
        (error => {
            this.result = null;
            throw error;
            }
        ));
}

Этот фрагмент кода прекрасно работает в реальном приложении. Единственная проблема в том, что я не понимаю, как правильно это проверить. Я написал шпиона, который выбрасывает ошибку, чтобы функция обработки ошибок могла ее сбросить. Это выглядит следующим образом:

spyOn(serviceMock, 'someFunction').and.returnValue(throwError('Error!!'));

Поскольку ошибка вызывается не непосредственно в функции, а в асинхронно выполняемой функции обработки ошибок, она не будет работать, если я использую

expect(component.myFunction()).toThrowError() //test fails because apparently no error is thrown, although I get an 'unhandled exception: Error!!' in the console

Я также не могу использовать попытку catch в тесте, потому что тогда ошибка будет выдана, но не перехвачена. Тем не менее, тест не пройден, потому что произошла ошибка.

Я хотел бы проверить, что ошибка переброшена или, по крайней мере, мой тест не провалился, потому что эта ошибка выдается.

Может пожалуйста, скажите мне, возможно ли это в Jasmine или если идея бросать ошибки и использовать глобальный обработчик ошибок не очень хорошая идея?

Любая помощь будет принята:)

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