如何验证根本没有发出http请求?

时间:2012-11-13 09:31:15

标签: angularjs

如何验证是否没有调用http请求方法来执行任何请求。我有这段代码:

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

            });
    }; 

和这个测试:

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

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

    });

如何验证未调用http.get?

1 个答案:

答案 0 :(得分:13)

您可以使用$httpBackend mock中的verifyNoOutstandingRequest()方法测试未进行任何通话。

通常这些验证是在Jasmine测试的afterEach部分完成的。除此之外,通常调用另一个方法verifyNoOutstandingExpectation()来验证是否实际调用了所有预期的调用。

以下是代码,您需要注入$httpBackend mock:

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

然后你测试,最后:

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

当然,您可以在单个测试中调用$httpBackend.verifyNoOutstandingRequest()。上述http://docs.angularjs.org/api/ngMock.$httpBackend页面提供了有关该主题的大量信息。