如何验证是否没有调用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?
答案 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页面提供了有关该主题的大量信息。