如何 运行 对 angular httpbasedservice 进行单元测试?

How to run unit test for angular httpbasedservice?

我已经从这个非常好的站点分叉了一项服务 http://www.benlesh.com/2013/06/angular-js-unit-testing-services.html。我在玩 httpBasedservice:

angular.module('myApp').factory('httpBasedService', function($http) {
  return {
    sendMessage: function(msg) {    
      return $http.get('somthing.json?msg=' + msg)
        .success(function(result) {
          return result.data;
        })
        .error(function(){
          //
        })
    }
  };
});

如何让httpBasedservice的测试通过? plunkr 参考:http://plnkr.co/edit/9yNZUpLpoTk9awNwGGEM?p=preview

您需要针对 response.data 属性 而不是整个响应对象进行断言。

returnedPromise.then(function(response) {
    result = response.data;
});

问题出在您的测试用例上,因为您正在进行异步调用并期望将其用于结果数据..

这就是你所期待的..

expect(result).toEqual(returnData);

但由于它是异步调用,您不会立即得到结果,因此您的测试用例失败了。

所以你需要做这样的事情。

 var result;
    returnedPromise.then(function(response) {
      result = response;
      expect(result.data).toEqual(returnData);
    });

Here is the working plunkr