Javascript http后端代理无法使用量角器e2e
我是e2e测试和angular的新手,我正在尝试弄清楚如何模拟http请求。我有一个应用程序,我需要对页脚和常量文件之类的东西发出xhr请求,我想实际执行这些请求,但实际的服务调用,比如向DB添加一些东西,我想模拟(这样每当我运行e2e测试时,它不会每次都填充测试数据) 我最终将使用一个API,但为了让球滚起来,我在处理该元素点击的函数上做了一个$http get toJavascript 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
/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”作为依赖项,它破坏了一切。