У меня есть код в угловом контроллере:
user — это angular $resource, который возвращает обещание при вызове метода get.
$scope.credentials = {
username:"",
password:"",
rememberMe:false
};
var currentUser = {};
$scope.login = function(callback){
user.get($scope.credentials)
.$promise
.then(function(user){
$scope.currentUser = user;
return cb ? cb(user) : user;
})
.catch(function(res){
throw "LoginError";
});
};
Я пытаюсь проверить, выдает ли он ошибку или нет с жасмином, например:
expect(function(){
scope.login();
}).toThrow();
Но вылетает эта ошибка:
Ожидается, что функция вызовет исключение.
Я проверил принятие обещания, которое работает, как и ожидалось, но я предполагаю, что есть какой-то асинхронный аспект, с которым я не могу справиться.
Я также пытался вызвать передачу и вызов done(), но это тоже не сработало.
редактировать:
Я издеваюсь над своим бэкэндом так:
beforeEach(inject(function($rootScope,$controller,_$httpBackend_){
$httpBackend = _$httpBackend_;
successCallback = jasmine.createSpy();
errorCallback = jasmine.createSpy();
scope = $rootScope.$new();
controller = $controller('LoginController',{
'$scope':scope
});
}));
afterEach(function(){
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
});
Обратите внимание, что другие мои тесты работают, я пробовал другие сценарии, когда сервер возвращает 200 и пользователь, и все работает. Я специально проверяю, выдает ли $scope.login() ошибку при получении ошибки сервера.