我正在尝试为 AngularJS Controller 设置单元测试,其中包括调用 $http.get
方法的服务。但是,即使我在 $httpBackend.flush()
之前使用 $httpBackend.expectGET
,应用程序仍尝试
GET
模板 HTML 资源,因此会出现意外的请求错误。
beforeEach(inject(function($injector){
controller = $injector.get('$controller');
scope = $injector.get('$rootScope').$new();
httpBackend = $injector.get('$httpBackend');
httpBackend.whenGET(UrlPrefix+"/promotions/default.json").respond("yeh");
}));
it("should fetch promotions", function() {
httpBackend.expectGET(UrlPrefix+"/promotions/default.json") ;
Controller = controller('promotionsController',{
$scope : scope
});
scope.getPromotions();
httpBackend.flush();
});
});
我得到:
Unexpected request : GET ./template/loader/app-loader.html
这是我的模板,应该在 Controller 之前加载。您知道如何绕过模板 GETS 吗?
最佳答案
如果拥有真正的 HTML 模板对于此特定测试并不重要,您可以通过使用一些虚拟模板填充 $templateCache
来防止下载它。像这样的事情
beforeEach(inject(function($injector, $templateCache) {
// ...
$templateCache.put('./template/loader/app-loader.html', '');
}));
您可能需要调整模板网址以匹配实际请求的网址。
关于javascript - Angularjs $httpBackend 意外请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26117076/