我在Jasmine中遇到了一些測試函數返回承諾的問題。這個解決方案非常接近我遇到的問題:How to resolve promises in AngularJS, Jasmine 2.0 when there is no $scope to force a digest?使用Jasmine 2.4返回承諾的測試服務*
該帖子是從2014年開始的,目前尚不清楚他們使用的是哪種版本的茉莉花。這仍然是正確的原因,爲什麼要測試一個解決在當前(2.4.0 ^)版本的承諾的函數?
編輯:
我有它的模式看起來像這樣的服務:
angular.module('somemodule').factory('listOfDependencies','NewService');
function NewService(listOfDependencies){
var getObject = function(para1, para2,...,paraN){
var deferred = $q.defer();
if(someDependency.method())
deferred.resolve(someDependency.get(key));
else
deferred.resolve(returnsNewObject);
// there's also a case that returns deferred.reject(reason);
return deferred.promise;
};
return getObject:getObject;
};
在我的規格,測試目前看起來是這樣的
it('should return the object', inject(function() {
var obj = { some: Object };
NewService.getObject('param1'...'paramN').then(
function(data){
expect(data.obj).toEqual(obj);
},
function(response){
//promise failed
});
現在我期待基於對象'obj'應返回。在我的服務是這種情況下,按理應該返回」
if(someDependency.method())
deferred.resolve(someDependency.get(key));
的問題是,是,它返回的對象是:
else
deferred.resolve(returnsNewObject);
沒有什麼不好的代碼或任何其依賴的邏輯(我把所有這些分開了,並且測試了很多次),所以我覺得我的語法(?)在茉莉花規範中有些問題,或者我只是沒有正確地測試諾言。謝謝你看看這個!
請做一些小小的代碼來闡述 - 這個不清楚。 –
當然!讓我知道如果您需要其他任何東西,當我發佈時,我只是不在我的代碼前面。 – arturobelano