我正在尝试测试AngularJS服务carService,但$httpBackend似乎不起作用。
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(); }); }); });
试试这个:
expect(response.data.length).toEqual(3);
$http请求返回的响应对象在data属性(docs)中具有响应数据。
$http
data