-1

我目前正在运行 angularjs 1.2.10 并使用 karma/jasmine 和 angular-mocks-1.2.10 进行单元测试,并陷入 $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 时需要记住的其他内容。

4

1 回答 1

3

我做了一个小提琴,如果你可以拥有超过 2 个:http: //fiddle.jshell.net/gZS5M/

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

工作正常。我猜你只是在你的网址或其他东西中有错字。

如果这没有帮助,请随时向我回击

于 2014-02-18T05:38:31.303 回答