我正在尝试为AngularJS控制器设置一个单元测试,其中包含一个调用$http.get
方法的服务。但是,即使我在$httpBackend.expectGET
之前使用$httpBackend.flush()
,app也会尝试
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();
});
});
我得到了:
意外请求:GET ./template/loader/app-loader.html
这是我应该在控制器之前加载的模板。你知道如何绕过模板GETS吗?
答案 0 :(得分:0)
如果拥有真实的HTML模板对于此特定测试并不重要,则可以通过使用某个虚拟模板填充$templateCache
来阻止其下载。像这样的东西
beforeEach(inject(function($injector, $templateCache) {
// ...
$templateCache.put('./template/loader/app-loader.html', '');
}));
您可能需要调整模板网址以匹配所请求的实际网址。
答案 1 :(得分:0)
据我所知,我认为你应该绕过它
$httpBackend.whenGET('./template/loader/app-loader.html').passThrough();