角度コントローラーにいくつかのコードがあります:
user は、 get メソッドが呼び出されたときに promise を返す角度のある $resource です。
$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();
しかし、このエラーがスローされます:
例外をスローする関数が必要です。
期待どおりに機能する約束の受け入れをテストしましたが、対処できない非同期の側面があると想定しています。
また、passing 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() がエラーをスローするかどうかを具体的にテストしています。