Angularjs $ httpBackend意外请求

时间:2014-09-30 09:17:31

标签: javascript angularjs httpbackend

我正在尝试为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吗?

2 个答案:

答案 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();