$ httpBackend处理3个以上的电话

时间:2014-02-17 18:56:52

标签: angularjs unit-testing jasmine karma-runner httpbackend

我目前正在运行angularjs 1.2.10并使用带有angular-mocks-1.2.10的karma / jasmine进行单元测试,并在$ httpBackend的单元测试用例中停留。

在其中阻止

describe('sumCtrl'...)
 ...
beforeEach(angular.mock.inject(function($rootScope,$controller,$httpBackend){
 scope = $rootScope.$new();
 httpBackend = $httpBackend;
 $controller('sumCtrl',{$scope:scope});
}));

it("should call these http services",function(){
 httpBackend.expectGET('/api/something1/').respond({success:true});
 httpBackend.expectPOST('/api/something2/').respond({success:true});
 httpBackend.flush();

});

上面的代码完美无缺,但是当我再添加一个httpBackend调用

    it("should call these http services",function(){
     httpBackend.expectGET('/api/something1/').respond({success:true});
     httpBackend.expectPOST('/api/something2/').respond({success:true});
     httpBackend.expectPOST('/api/something3/').respond({success:true});
     httpBackend.flush();

    });

这会在第4行出错。不满意的请求:POST'/ api / something3'....使用$ httpBackend ....

不知道在使用$ httpBackend时使用$ httpBackend进行请求的数量是否有限制,或者在使用$ httpBackend时需要记住的其他内容。

1 个答案:

答案 0 :(得分:3)

我做了一个小提琴,你应该有超过2:http://fiddle.jshell.net/gZS5M/

$http.get('/api/something1');
$http.post('/api/something2');
$http.post('/api/something3');
$http.post('/api/something4');

工作正常。我猜你的网址上只有拼写错误。

如果这没有用,请随时向我反击