2015-04-27 2 views
0

Я все еще пытаюсь изучить Жасмин и проверить Угловое обслуживание. В настоящее время я пытаюсь проверить .success, и ошибка вызывает http.get.

обслуживания вызовов

this.get = function (param1, param2) { 

     return $http.get('api/something/get/param1/param2') 
      .success(function (data) { 
       return data; 
      }) 
      .error(function() { 
       return "Please select param1 AND param2"; 
      }); 
    }; 

жасмин Тесты

it('service makes unsuccessful API call', function() { 
     var response = "This is the response"; 

     httpBackend.when('GET', "api/something/Get/0/0").respond(404); 

     var data; 

     service.get(0, 0).then(function(result) { 
      data = result; 
     }); 

     httpBackend.flush(); 

     expect(data).toEqual("Please select param1 AND param2"); 


    }); 

    it('service makes successful API call', function() { 
     var response = "This is the response"; 
     httpBackend.when('GET', "api/something/Get/0/0").respond(response); 
     var data; 

     service.get(0, 0).then(function(result) { 
      data = result.data; 
     }); 

     httpBackend.flush(); 

     expect(data).toEqual(response); 


    }); 

В первом тесте (ошибка) данные = result.data линии в то() не вызывается. В ожидании (данные) .toEqual() данные не определены. Когда я просматриваю все, я вижу, где вызывается служба, и сообщение об ошибке заносится в result.data.

Во втором тесте (Успех) я вижу то же самое, но данные устанавливаются, когда вызывается функция then.

Почему моя функция then не вызвана .error()?

+1

потому что у вас нет аргумента обработчика отклонения в 'then (resolveHandler, rejectHandler)' – charlietfl

+1

Спасибо за помощь. Добавление rejectHandler решило проблему. – James

ответ

0

success() и error() не работают так же, как then(). Значение, возвращаемое обратным вызовом, игнорируется. success() и error() вернуть обещание, на которое они призваны, а не новое обещание, как then().

Таким образом, их использование должно быть ограничено обратными вызовами, имеющими только побочные эффекты (например, инициализация переменной области видимости).

Смежные вопросы