Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript http后端代理无法使用量角器e2e_Javascript_Angularjs_Http_Protractor_E2e Testing - Fatal编程技术网

Javascript http后端代理无法使用量角器e2e

Javascript http后端代理无法使用量角器e2e,javascript,angularjs,http,protractor,e2e-testing,Javascript,Angularjs,Http,Protractor,E2e Testing,我是e2e测试和angular的新手,我正在尝试弄清楚如何模拟http请求。我有一个应用程序,我需要对页脚和常量文件之类的东西发出xhr请求,我想实际执行这些请求,但实际的服务调用,比如向DB添加一些东西,我想模拟(这样每当我运行e2e测试时,它不会每次都填充测试数据) 我最终将使用一个API,但为了让球滚起来,我在处理该元素点击的函数上做了一个$http get to/someUrl describe('companyManagement', function() { var prox

我是e2e测试和angular的新手,我正在尝试弄清楚如何模拟http请求。我有一个应用程序,我需要对页脚和常量文件之类的东西发出xhr请求,我想实际执行这些请求,但实际的服务调用,比如向DB添加一些东西,我想模拟(这样每当我运行e2e测试时,它不会每次都填充测试数据)

我最终将使用一个API,但为了让球滚起来,我在处理该元素点击的函数上做了一个$http get to
/someUrl

describe('companyManagement', function() {
    var proxy;
    var HttpBackend = require('http-backend-proxy');
    beforeEach(function(){
        proxy = new HttpBackend(browser);

        proxy.onLoad.whenGET('/someUrl/').respond(200,{'mock':'data'});
        browser.get('/#/companyManagement');

        browser.pause();
        element(by.repeater('org in vm.organizations').row(0)).element(by.css('.contentHeader')).click();
    });
    it('alias should be correct in the org list', function(){
        var x;
    });
});
这是我当前的代码。我需要http后端代理,并为我的it语句在我的before-each中设置了一些东西,稍后我将编写这些语句。beforeach创建一个新的HttpBackend对象,并执行
proxy.onLoad.whenGET('/someUrl').respond(200,{mock:'data'})。然后我获取页面(在我的.conf文件中设置了一个baseUrl),并暂停浏览器,以便查看控制台。此时,当我查看浏览器控制台时,它会给出意外的请求错误。一个用于
modules/footer/footer.html
,另一个用于
constants/constants.json

错误:意外请求:获取模块/footer/footer.html 不需要更多的请求 $httpBackend@ 森德雷@ $http/serverRequest@ 处理队列@ scheduleProcessQueue/函数:1:1 把手@

页面上没有显示任何内容,因此Proactor无法单击该元素。我尝试过类似于
proxy.onLoad.whenGET('/.*/').respond(200,{mock':'data'),但出现相同的错误


有人能给我解释一下如何正确模拟http请求吗

您可以使用相应的方法简单地对HTML和其他静态文件进行所有请求。http后端代理将忽略它们,并且它们的响应将保持不变

proxy.onLoad.whenGET(/\.html$/).passThrough();
proxy.onLoad.whenGET(/constants\.json$/).passThrough();

这是一种常见的方法,因为SPA通常会发出大量的XHR请求来获取模板,而在大多数情况下,这些模板都不需要模拟。但是,由于http后端默认跟踪所有请求,因此您必须明确指出哪些特定请求需要忽略。

我将在周一尝试此功能,然后回复您,谢谢您的回答谢谢。我认为它对我不起作用的部分原因是我在app.js中包含了“ngMockE2E”作为依赖项,它破坏了一切。