所以,我试图通过Protractor命中一个端点。我已经写了许多相同代码的不同变体,试图让它发挥作用。
所以我使用'request'作为我的http客户端似乎最受欢迎,并找到其他http客户端,并考虑尝试这些,如果我不能让这个工作。
我也用黄瓜和柴如诺。所以运行它的结果是什么。所以,当我运行这个黄瓜测试并且它通过这个函数时,它不执行request.post。它只是继续下一步。控制台中没有显示错误。我使用REST客户端进行GET检查POST是否有效,并注意到它不起作用。 我需要一些帮助来解决它为什么这样做。
它会有所作为如果我将post请求放入其他地方的类中的函数中。我打电话给它发送适当的变量?
以下是代码:
this.When(/^I test this$/, function (next) {
var request = require('request');
var options = {
headers: {
'id': 'AQ8WHWC',
'sessionid': 'XnINW5KDQg=',
'Accept': 'application/json',
'Accept-Language': 'en-us',
'random': 'BS3P5Q'
},
form: { "pay_load": [] }
};
request.post('http://myurl.com/endpoint/test/', options, callback);
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body);
console.log(info);
}
}
browser.sleep(1).then(next)
});
运行黄瓜测试的控制台输出:
Scenario: this is a cool test
# endpoint/test/testing.feature:7
Given I run this endpoint test
# endpoint/test/testing.feature:8
When I test this
# endpoint/test/testing.feature:9
Then I see this
# endpoint/test/testing.feature:10
1 scenario (1 passed)
3 steps (3 passed)
[launcher] chrome passed
Done, without errors.
答案 0 :(得分:2)
我发现问题是我使用npm请求的语法。
这个东西可能非常挑剔。 我曾经提供过自定义请求选项:request(object,object)
我最终做了以下工作以使其发挥作用:
var request = require('request');
var options = {
method: 'POST',
url: 'http://myurl.com/endpoint/test/',
headers: {'id': 'AQ8WHWC',
'sessionid': 'XnINW5KDQg=',
'Accept': 'application/json',
'Accept-Language': 'en-us',
'random': 'BS3P5Q'
},
body: '{ "pay_load": [] }'
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body);
console.log(response);
console.log(info);
}
}
request(options, callback);
};