我需要为服务A编写单元测试,这取决于服务B.服务B有时会进行$ http调用。如何正确调用$ httpBackend.flush()来获得这些结果。
以下是基本概念:
serviceB.someMethod = function(){
var deferred = $q.defer();
someOtherCall()
.then(function(data){ deferred.resolve(data) })
.catch(function(err){
$http.get(options).success(function(data){deferred.resolve(data)}); // <-- HTTP call
});
return deferred.promise;
};
serviceA = function(things, options, filterFn){
var promises = [],
angular.forEach(things, function(thing){
promises.push(filterFn(thing, options)); // <-- filterFn calls serviceB.someMethod
});
return $q.all(promises);
};
如何在我的茉莉花测试中确定何时调用$httpBackend.flush()
,以便serviceB解析,从而为A服务?显然我的真实服务还有更多,但这些例子应该证明这个问题。