How do I make fun of $ http in the Jasmine service for AngularJS?

I am trying to test the AngularJS carService , but $httpBackend does not seem to work.

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

Can someone explain why the answer is empty?

 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
angularjs unit-testing jasmine
source share
1 answer

Try the following:

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

The response object returned by the $http request has response data in the data ( docs ) property.

+7
source

All Articles