1
如何測試服務返回的承諾的值?在$q documentation中,承諾值是在使用resolve(value)的測試中預設的。其他方法測試控制器中的服務邏輯,使用的事實是AngularJS評估承諾並將值綁定到$ scope。服務返回的測試承諾值
在我看來,這些方法都沒有在應該測試的地方實際測試服務的邏輯。我如何測試已解決的承諾(由服務返回)是否包含正確的值?
下面的例子:
myApp.service('service', function($q){
var obj = {};
obj.test = function() {
var deferred = $q.defer();
deferred.resolve(false);
return deferred.promise;
}
return obj;
});
爲了測試該服務,我想這樣做在理論上以下(不實際工作): 變量$ Q,服務;
beforeEach(function() {
module('myModule');
service = $injector.get('service');
});
describe('...', function() {
it('Testing whether promise contains correct value', function() {
var myPromise = service.test();
myPromise.then(function(value) {
expect(value).toBeFalsy();
});
});
});
我同意我應該返回一個承諾(在原來的問題中改變了它),但是這仍然無法工作。 – bengro 2014-09-22 23:25:25
您可以將您的測試的其他部分特別發佈到您設置測試的部分嗎? – 2014-09-23 05:11:49
我已經更新了原始問題中的測試。 – bengro 2014-09-23 06:43:03