Угловой модульный тест | обслуживание | $httpbackend всегда выполняет ветку ошибки при ответе с кодом состояния 401 или 500

Я использую $httpbackend.

Когда мы издеваемся над конкретной службой, мы затем отвечаем на нее кодом состояния, например 200-209, который запускает ветку успеха, а другие триггеры - ветку ошибки.

Моя служба может отправить ответ с другим кодом состояния, и я должен перенаправить пользователя на страницы ошибок.

Если я отвечу кодом состояния 401 или 500, будет выполнена ветвь ошибки. как я могу получить этот код состояния в ветке успеха.

http://plnkr.co/edit/bDVf9hGdqUZgYTNsm3X9?p=preview


person navtej singh    schedule 23.06.2016    source источник
comment
Это ожидаемое поведение, поскольку 401 и 500 являются кодами ошибок в HTTP. Вы можете выполнить логику перенаправления в самом обработчике ошибок.   -  person Mahendra Singh    schedule 23.06.2016
comment
@MahendraSingh: ваш комментарий должен быть ответом.   -  person MarcoS    schedule 23.06.2016
comment
Я опубликую более формальный ответ. Спасибо за предложение.   -  person Mahendra Singh    schedule 23.06.2016


Ответы (1)


Согласно источнику $http, метод isSuccess используется для определения того, будет ли вызван обратный вызов успеха или нет. Вот определение метода isSuccess из источника https://github.com/angular/angular.js/blob/master/src/ng/http.js#L400

function isSuccess(status) {
  return 200 <= status && status < 300;
}

Все остальные коды приведут к обратному вызову ошибки.

Таким образом, перенаправление вашей страницы с ошибкой должно выполняться в обратных вызовах ошибок.

Надеюсь, поможет.

person Mahendra Singh    schedule 23.06.2016