2014-02-17 34 views
-1

我目前正在运行angularjs 1.2.10和使用karma/jasmine with 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。

+0

尝试添加.passThrough()http://docs.angularjs.org/api/ngMockE2E/service/$httpBackend –

+0

但不会直通()调用原始的API。 – icanbeacoder

回答

3

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

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

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

随意在我拍回来,如果这不利于

+0

这帮了我。 expectPOST()抛出错误,但是当我使用when()时,错误消失。并通过测试用例-_- – icanbeacoder