0

我正在尝试从 Protractor E2E 测试中调用休息端点。我提到了以下站点,但是这篇文章似乎基于旧 API

例如:protractor.promise.defer(); 似乎在最新的 API 上不再有效。

http://squirrel.pl/blog/2014/01/15/direct-server-http-calls-in-protractor/

您能否建议/提供示例代码以根据最新的量角器 API (>= 1.3) 调用休息端点。

我正在尝试编写通用函数,如下所示。

var executeRequest = function(method, url) {
     var defer = protractor.promise.defer();

     // method can be ‘GET’, ‘POST’ or ‘PUT’
     request({uri: url, method: method, json: true}, function(error, response, body) {

        if (error || response.statusCode >= 400) {
          defer.reject({
            error : error,
            message : response
          });
        } else {
          defer.fulfill(body);
        }
     });

     // Return a promise so the caller can wait on it for the request to complete
     return defer.promise;
};
4

2 回答 2

1

我使用 npm 模块 - “needle”来调用 restAPI 。这具有重定向选项,即使在重定向之后也有助于验证测试站点。

请在下面找到示例测试以验证其余端点是否已启动并正在运行。

it("检查 restendpoint 服务是否正在运行", function(done){

var restendpointUrl = browser.baseUrl + 'service'; 

needle.get(healthcheckUrl,{follow_max : 5}, function(err,resp) {

        expect(resp.statusCode).toBe(200);
        if (!err && resp.statusCode == 200) {

            expect(true).toBe(true);

        } else {
            expect(false).toBe(true);
        }
            done();

   });

});

盐水,非常感谢您之前的回复。

于 2015-04-15T17:56:35.737 回答
1

您可以改用request-promise。他们网站上的例子...

var rp = require('request-promise');

var options = {
  uri : 'http://posttestserver.com/post.php',
  method : 'POST'
};

rp(options)
  .then(console.dir)
  .catch(console.error);
于 2015-04-10T14:16:56.303 回答