0
我有一個服務是這樣的:噶 - 窺探功能錯誤處理
app.service('usersService.v2', ['$http', '$q', '$exceptionHandler', 'User', 'userValidator.v2', 'CRUD', function($http, $q, $exceptionHandler, User, userValidator, CRUD){
function dummyPromise(){
var dummyDeferred = $q.defer();
dummyDeferred.resolve('dummy');
return deferred.promise;
}
this.getUser = function(userID, companyID){
try{
userValidator.validateId(userID);
userValidator.validateId(companyID);
}
catch(e){
$exceptionHandler(e);
return dummyPromise();
}
return $http.get(apiUrl + 'api/v2/companies/' + companyID + '/users/' + userID)
.then(function(response){
var user = new User(response.data);
try{
userValidator.validateUser(CRUD.READ, user);
}
catch(e){
$exceptionHandler(e);
return;
}
return user;
})
};
}]);
,基本上我想測試取決於什麼驗證功能做這個服務的行爲。 userValidator.*
函數是if/else塊引發錯誤。
在噶我有這樣的事情:
describe('Service: usersService.v2', function() {
var usersService, httpBackend, state, userValidator;
const url = 'address'
function _inject() {
angular.mock.inject(function ($injector) {
usersService = $injector.get('usersService.v2');
userValidator = $injector.get('userValidator.v2');
httpBackend = $injector.get('$httpBackend');
});
}
beforeEach(function() {
angular.mock.module('app');
_inject();
});
describe('getUser', function() {
beforeEach(function() {
httpBackend.when('GET', url);
});
afterEach(function() {
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
it('should return a dummy promise if ID validation fails', function(){
spyOn(userValidator, 'validateId').and.throwError('Missing or wrong ID thrown');
usersService.getUser()
.then(function(data){expect(data).toBe('dummy');})
});
)};
})
,但是當我跑噶我得到一個錯誤,因爲這將是,如果我沒有把catch
處理厚望及以下代碼塊不被執行。
我在做什麼錯?
乾杯, 曼努埃爾
UPDATE: 驗證方法是這樣的:
... code code code ...
this.validateId = function(ID){
if(!ID || !angular.isNumber(ID)) throw 'Missing or wrong ID';
}
因此,我的問題是,噶正試圖處理由驗證拋出,而不是錯誤讓userService
做到這一點。
對不起,我不是很清楚,我剛剛更新的問題:d我的方法不返回布爾,但他們幾乎沒有扔 – Phugo
無法測試,但模擬'userValidator.v2' –
這不是錯誤嘲笑'spyOn(userValidator,'validateId').throwError('缺少或錯誤的ID拋出');'? – Phugo