javascript - Angularjs $httpBackend 意外请求

标签 javascript angularjs httpbackend

我正在尝试为 AngularJS Controller 设置单元测试,其中包括调用 $http.get 方法的服务。但是,即使我在 $httpBackend.flush() 之前使用 $httpBackend.expectGET,应用程序仍尝试 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();
    });
});

我得到:

Unexpected request : GET ./template/loader/app-loader.html

这是我的模板,应该在 Controller 之前加载。您知道如何绕过模板 GETS 吗?

最佳答案

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

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

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

关于javascript - Angularjs $httpBackend 意外请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26117076/

相关文章:

JavaScript 在用户缓存中选择

javascript - Angular Js Curl -d http 请求

testing - 如何在 AngularJS 中为 servicesSpec 和 controllersSpec 定义全局 $httpBackend?

angularjs - $HttpBackend (AngularJS) 出现意外请求错误

Javascript RegExp 在 IE 中不起作用

javascript - 如何在 Angular js中使用指令触发输入

javascript - 无法读取 Controller 中的指令值

jquery - $httpBackend 不模拟 $.ajax(...) 调用

javascript - Ionic v3 将值传递给另一个页面

AngularJS在路由之间传递范围