How do I mock $http in AngularJS service Jasmine test?
10,503
Try this:
expect(response.data.length).toEqual(3);
The response object returned by a $http
request has the response data within the data
property (docs).
Author by
Soni Ali
Updated on July 20, 2022Comments
-
Soni Ali almost 2 years
I am trying to test an AngularJS service
carService
, but the$httpBackend
does not seem to work.//carService angular.module('services').factory('carService', function($http) { return { getTypes: function() { return $http.get('/api/cars/types'); } }; });
Can anybody explain why the response is 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(); }); }); });