如何为角度httpbasedservice运行单元测试?

时间:2015-07-17 05:30:30

标签: angularjs karma-jasmine

我已从这个非常好的网站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 ref:http://plnkr.co/edit/9yNZUpLpoTk9awNwGGEM?p=preview

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

这是您所期待的......

expect(result).toEqual(returnData);

但由于它是异步调用,因此您无法立即获得结果,因此您的测试用例将失败。

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

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

Here is the working plunkr