我在角度控制器中有一些代码:
user 是一个角度 $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();
但是会抛出这个错误:
预期函数抛出异常。
我已经测试了对承诺的接受,它按预期工作,但我假设存在一些我无法处理的异步方面。
我也尝试过调用 pass in 并调用 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() 在收到服务器错误时是否抛出错误。