首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angularjs $httpBackend意外请求

Angularjs $httpBackend意外请求
EN

Stack Overflow用户
提问于 2014-09-30 09:17:30
回答 2查看 341关注 0票数 1

我试图为AngularJS控制器设置一个单元测试,其中包括一个调用$http.get方法的服务。然而,尽管我在使用$httpBackend.expectGET之前使用了$httpBackend.flush(),但app正在尝试使用GET模板HTML资源,因此它提供了一个意外的请求错误。

代码语言:javascript
复制
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

这是我的模板,应该在控制器之前加载。你知道如何绕过模板获取吗?

EN

回答 2

Stack Overflow用户

发布于 2014-09-30 09:28:48

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

代码语言:javascript
复制
beforeEach(inject(function($injector, $templateCache) {
    // ...
    $templateCache.put('./template/loader/app-loader.html', '');
}));

您可能需要调整模板url以匹配实际请求的模板url。

票数 0
EN

Stack Overflow用户

发布于 2016-04-07 06:22:25

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

代码语言:javascript
复制
 $httpBackend.whenGET('./template/loader/app-loader.html').passThrough();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26117076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档