2012-11-13 30 views
6

cách xác minh rằng không có phương thức yêu cầu http nào được gọi để thực hiện bất kỳ yêu cầu nào. Tôi có mã này:Cách xác minh rằng yêu cầu http không được thực hiện?

$scope.getSubnetsPageDetails = function (pageNumber) { 
     $http.get(URLS.subnetsPagesCount(pageNumber)).success(function (response) { 
      $scope.pageDetails = response; 
     }).error(function (response, errorCode) { 

      }); 
    }; 

và thử nghiệm này:

it("should not allow request with negative page number", function() { 

     scope.getSubnetsPageDetails(-1); 
     //verify that htt.get is not invoked at all 

    }); 

Làm thế nào để xác minh rằng http.get không gọi?

Trả lời

13

Bạn có thể kiểm tra rằng không có cuộc gọi nào được thực hiện bằng cách sử dụng phương thức verifyNoOutstandingRequest() từ $httpBackend mock.

Thông thường, loại xác minh đó được thực hiện trong phần afterEach trong thử nghiệm của Jasmine. Trên đầu trang của điều này nó là phổ biến để gọi một phương pháp khác, verifyNoOutstandingExpectation() để xác minh rằng tất cả các cuộc gọi dự kiến ​​đã thực sự gọi.

Đây là mã, nơi bạn cần phải tiêm $httpBackend giả:

var $httpBackend; 
beforeEach(inject(function($injector) { 
    $httpBackend = $injector.get('$httpBackend'); 
})); 

sau đó để bạn thử nghiệm và ở cuối:

afterEach(function() { 
    $httpBackend.verifyNoOutstandingExpectation(); 
    $httpBackend.verifyNoOutstandingRequest(); 
}); 

Tất nhiên bạn có thể gọi $httpBackend.verifyNoOutstandingRequest() bên trong một kiểm tra cá nhân. Trang http://docs.angularjs.org/api/ngMock.$httpBackend được đề cập có nhiều thông tin về chủ đề.

Các vấn đề liên quan