gpt4 book ai didi

angularjs - 如何在AngularJS服务Jasmine测试中模拟$ http?

转载 作者:行者123 更新时间:2023-12-04 04:04:24 26 4
gpt4 key购买 nike

我正在尝试测试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();
});


});
});

最佳答案

试试这个:

expect(response.data.length).toEqual(3);
$http请求返回的响应对象的响应数据在 data属性( docs)内。

关于angularjs - 如何在AngularJS服务Jasmine测试中模拟$ http?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33509431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com