1

我正在尝试为 AngularJS 控制器设置一个单元测试,其中包括一个调用$http.get方法的服务。但是,即使我使用$httpBackend.expectGETbefore $httpBackend.flush(),应用程序正在尝试 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吗?

4

2 回答 2

0

如果有一个真正的 HTML 模板对于这个特定的测试并不重要,你可以通过填充$templateCache一些虚拟模板来防止它被下载。像这样的东西

beforeEach(inject(function($injector, $templateCache) {
    // ...
    $templateCache.put('./template/loader/app-loader.html', '');
}));

您可能需要调整模板网址以匹配所请求的真实网址。

于 2014-09-30T09:28:48.117 回答
0

据我所知,我认为你应该绕过它

 $httpBackend.whenGET('./template/loader/app-loader.html').passThrough();
于 2016-04-07T06:22:25.313 回答