2015-01-13 2 views
0

Я создаю приложение AngularJS, и я пытаюсь его протестировать. То, что я хочу проверить, - это отклоненный сценарий.Тестирование отклонено обещание в Jasmine

Это услуга, которую я пытаюсь тест:

.factory('LoginService',['Login', 'consoleService', function(Login, consoleService){ 
return { 
    getActiveUser: function() { 
     return Login.query({}).$promise.then(
      function (users) { 
       return users[0]; 
      }, 
      function (error) { 
       consoleService.print(error); 
      } 
     ); 
    } 
}; 

}]);

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

ответ

0

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

var failLogin; 
beforeEach(module(function ($provide) { 
    failLogin = false;   
    var mockLogin = { 
     query: function(data) { 
      return { 
       $promise: { 
        then: function(pass, fail) { 
         if (failLogin) { 
          fail('failure data'); 
         } else { 
          pass('pass data'); 
         } 
        } 
       } 
      } 
     } 
    } 

    $provide.value('login', mockLogin); 
} 

it('should pass', function(){ 
    LoginService.getActiveUser(); 
    // should pass 
}); 


it('should fail', function(){ 
    failLogin = true; 
    LoginService.getActiveUser(); 
    // should fail 
}); 
Смежные вопросы