2015-11-03 66 views
7

我正在尝试测试AngularJS服务carService,但$httpBackend似乎不起作用。

//carService 
angular.module('services').factory('carService', 
    function($http) { 
     return { 
      getTypes: function() { 
       return $http.get('/api/cars/types'); 
      } 
     }; 
    }); 

任何人都可以解释为什么响应为空吗?

describe("Services", function() { 

    beforeEach(module("app.services")); 

    describe("Car services", function() { 

     var service, $httpBackend; 

     beforeEach(inject(function($injector) { 
      service = $injector.get('carService'); 
      $httpBackend = $injector.get('$httpBackend'); 

      $httpBackend.when('GET', "/api/cars/types").respond(["Toyota", "Honda", "Tesla"]); 
     })); 

     afterEach(function() { 
      $httpBackend.verifyNoOutstandingExpectation(); 
      $httpBackend.verifyNoOutstandingRequest(); 
     }); 

     it('getTypes - should return 3 car manufacturers', function() { 
      service.getTypes().then(function(response) { 
       expect(response.length).toEqual(3); //the response is null 
      }); 
      $httpBackend.flush(); 
     }); 


    }); 
}); 

回答

7

尝试这种情况:

expect(response.data.length).toEqual(3); 

$http请求返回的响应对象具有属性datadocs)内的响应数据。

相关问题