2015-11-03 8 views
7

AngularJSサービスcarServiceをテストしようとしていますが、$httpBackendは機能していないようです。

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

なぜ応答がnullであるのか誰でも説明できますか?

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

これを試してください:$http要求によって返さ

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

応答オブジェクトはdataプロパティ(docs)内に応答データを有します。

関連する問題