AngularJS ngMock为嵌套的$ http调用$ httpbackend.flush

时间:2016-01-01 23:45:07

标签: angularjs unit-testing jasmine

我需要为服务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服务?显然我的真实服务还有更多,但这些例子应该证明这个问题。

0 个答案:

没有答案