如何在量angular器中进行HTTP GET + POST请求

我面临着在量angular器中发送HTTP请求的问题。 实际上,我需要在UI中执行一些操作后检查数据库中的数据。

这将是非常有用的,如果我能够使用JQuery做到这一点,但我无法find如何在量angular器内使用JQuery的方法。

需要帮忙 !!

实际上,我们尝试使用如下所示的NODEJS库,但是面临着一些问题。

var http = require('http'); var json_data; http.get('SiteUrl', function(response) { var bodyString = ''; response.setEncoding('utf8'); response.on("data", function(chunk) { bodyString += chunk; }); response.on('end', function() { json_data = bodyString; console.log("1---->"+json_data); }); }).on('error', function(e) { console.log("There is an error in GET request"); }); console.log("2---->"+json_data); 

debugging完成后,我们发现问题在于,Protractor并没有等待HTTP请求完成,只是传递。 我们先在控制台中得到“2 —->”,然后是“1 —->”。

您不能从量angular器访问jQuery(它是前端),因为量angular器testing套件只是一个NodeJS脚本(它是后端)。 所以你可以使用NodeJS HTTP API(或其他请求库)。

检查这个例子: http : //squirrel.pl/blog/2014/01/15/direct-server-http-calls-in-protractor/

我也使用http模块(为了不同的目的,重新初始化数据库)。

要使量angular器等待结束请求,请使用promise

 var http = require('http'); var json_data; http.get('SiteUrl', function(response) { var bodyString = ''; response.setEncoding('utf8'); response.on("data", function(chunk) { bodyString += chunk; }); response.on('end', function() { json_data = bodyString; console.log("1---->"+json_data); // All the processing and Angular code should be here console.log("2---->"+json_data); }); }).on('error', function(e) { console.log("There is an error in GET request"); }); 

如果你不喜欢把所有的数据处理放到response.on('end')callback函数中,那么使callback函数成为一个单独的函数。

另外我不得不说,量angular器不是用来直接检查数据库的。 这是为了进行端到端的testing。 您应该更好地构build一个复杂的场景,将一些数据写入其中一个页面,转到另一个页面,并期望数据被更新。

它为我工作:

 var request = require('request'); var options = { method: 'POST', url: 'http://testurl.com/endpoint/test/', headers: {'id': 'ABCD', 'sessionid': 'dummyId', 'Accept': 'application/json', 'Accept-Language': 'en-us' }, body: '{ "pay_load": [] }' }; function callback(error, response, body) { if (!error && response.statusCode == 200) { var info = JSON.parse(body); console.log(body); console.log(info); } } request(options, callback); 

我认为这不是你正在寻找的正确答案。 你还没有提到这个db名字。

我正在使用http://frisbyjs.com/从量angular器项目中的couchdb(文档数据库)中获取文档,并且非常好地达到了我的目的。

我在量angular器的git问题页面上发布了同样的问题,但他们无法回答我的问题。 所以,我find了一个替代scheme。 我把testing用例分成了两个testing用例。 在第一,我只是点击button,在第二我能够获取json并对其执行validation。

这样的事情呢?

http://eitanp461.blogspot.com.ar/2014/01/advanced-protractor-features.html

这篇文章build议重用已经存在的AngularJS模块,使用addMockModule函数将数据插入到数据库中。

这可以修改为注入一个新的AngularJS模块作为模拟与所有你想要的function,如检查的东西,数据等等。因为这是一个angular度模块/服务,它应该使用AngularJS http模块,因此量angular器将知道如何处理它。

缺点是什么? 那么这可能需要一个AngularJS的上下文来运行,不知道它是否会在非angular度的应用程序(或其中的部分,如一个非agularlogin)的工作。

思考?