Выдача ошибки из блока перехвата обещаний не проходит тест на ее обработку - PullRequest
0 голосов
/ 05 октября 2018

Я выбрасываю ошибку из $httpBackend ответа на функцию, а затем регистрирую и перебрасываю в части catch цепочки обещаний AngularJS:

function doAThingThatMustBeLogged(param) {
    return ExternalService.thingToLogFunction(param).then(response =>{
        MyLogger.Log('All is well');
    }).catch(error => {
        MyLogger.Log('Oh no.');
        throw new Error(error);
    })
}

it('should log doAThingThatMustBeLogged regardless of any errors thrown', () =>{
    $httpBackend.expectPOST('https://external-service.com/api/thing/to/log').respond(500);
    spyOn(MyLogger, 'Log');
    doAThingThatMustBeLogged(1)
    try {
        $httpBackend.flush();
    } catch (error) {
        // swallow error
    }
    expect(MyLogger.Log).toHaveBeenCalledWith('Oh no.');
})

Теперь я только перебрасываю ошибку какЯ не хочу проглотить это в не тестовом коде, потому что код, который вызывает doAThingThatMustBeLogged, может обрабатывать его лучше выше.Однако это означает, что теперь мне нужно обернуть $httpBackend.flush в моем тесте в блок try / catch, который затем выдает ошибку.

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

Есть ли способ выполнить тест, описанный выше, без необходимости пытаться // поймать флеш?

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