如何验证没有调用任何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?
您可以使用
$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页面提供了有关该主题的丰富信息.