我试图为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
这是我的模板,应该在控制器之前加载。你知道如何绕过模板获取吗?
发布于 2014-09-30 09:28:48
如果拥有一个真正的HTML模板对于这个特定的测试并不重要,那么可以通过使用一些虚拟模板填充$templateCache来防止它被下载。就像这样
beforeEach(inject(function($injector, $templateCache) {
// ...
$templateCache.put('./template/loader/app-loader.html', '');
}));您可能需要调整模板url以匹配实际请求的模板url。
发布于 2016-04-07 06:22:25
据我所知,我认为你应该绕开它
$httpBackend.whenGET('./template/loader/app-loader.html').passThrough();https://stackoverflow.com/questions/26117076
复制相似问题