6

如何验证没有调用任何 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 没有被调用?

4

1 回答 1

13

您可以使用$httpBackend mockverifyNoOutstandingRequest()中的方法测试是否未进行任何调用。

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

这是代码,您需要在其中注入$httpBackend模拟:

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页面包含大量关于该主题的信息。

于 2012-11-13T09:56:05.430 回答