嘗試在Karma中使用AngularMock進行單元測試,如果我的函數已返回被拒絕的承諾,但似乎無法在此問題上找到任何令人驚訝的承諾。AngularJS/Karma - 測試函數返回已解決或拒絕的承諾
我有一個像UserService,其中有一個功能的服務:processIdentityResponse
它返回一個承諾,是解決或否決取決於邏輯裏:
processIdentityResponse: function(response)
{
var deferred = $q.defer();
if (response.data.banned) {
deferred.reject(response);
} else {
deferred.resolve(response);
}
return deferred.promise;
}
我想測試,如果禁止屬性存在那麼被拒絕的承諾將被退回,如果沒有,則會被解決......我如何實現這一目標?
我試着像下面沒有成功:
it('should return a rejected promise if status is a string', function() {
var rejected = false;
UserService.processIdentityResponse(data).catch(function() {
rejected = true;
});
expect(rejected).toBe(true);
});
我覺得在服務上使用範圍非常奇怪。它似乎保留給指令和控制器。 – trysis 2015-03-23 18:43:55
@trysis你會如何測試承諾?我很樂意看到沒有調用'$ rootScope的方式。$ digest()' – 2015-07-31 13:40:23
我並不是在辯論有用性或必要性,只是說它看起來很奇怪。服務應該與DOM邏輯完全隔離,'$ scope' /'$ rootScope'與DOM相關,儘管他們的一些方法,比如'$ digest',並不需要。 – trysis 2015-07-31 13:53:55