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 モックverifyNoOutstandingRequest()のメソッドを使用して、呼び出しが行われていないことをテストできます。

通常、この種の検証は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 に答える