Node.js frisby.js.post()-无法在正文中发送xml
我正在尝试用frisby.js测试一些API。通过Node.js frisby.js.post()-无法在正文中发送xml,node.js,frisby.js,inrule,Node.js,Frisby.js,Inrule,我正在尝试用frisby.js测试一些API。通过.post()方法发送xml块时遇到问题。我可以在邮递员那里做得很好 这是我的密码: var xml_body = envSetup.ENV_DATA.inrule.xml_post_kia1; frisby.create('InRule 02 Verify XML Post') .addHeaders({ 'Accept': 'application/xml', 'Authorization': 'Basic <so
.post()
方法发送xml块时遇到问题。我可以在邮递员那里做得很好
这是我的密码:
var xml_body = envSetup.ENV_DATA.inrule.xml_post_kia1;
frisby.create('InRule 02 Verify XML Post')
.addHeaders({
'Accept': 'application/xml',
'Authorization': 'Basic <some internal token>',
'Content-Length': xml_body.length,
'Content-Type': 'application/xml'
})
.post(envSetup.URL + '/' + resource + '?action=basic', xml_body)
.inspectRequest()
.inspectBody()
.expectStatus(200)
.expectHeaderContains('Content-Type', 'application/xml')
.toss(); // InRule 02
我不知道为什么frisby没有展示身体(因此没有发送身体?),即使我把
xml\u身体
放在应该放的地方。虽然不是对我问题的直接回答,如果其他人也有同样的问题……你可以把注意力从frisby
中移开,退后一步,使用jasmine节点
——并且在你的frisby\u spec.js
文件中!Node.js有一个request
包,可以让你发布任何东西,所以你可以执行一个Jasmine descripe/it
describe('Stuff', function() {
it('DoIt', function(done) {
var options = {
method: 'POST',
url: envSetup.URL + '/' + resource,
qs: { action: 'basic' },
headers:
{ accept: 'application/xml',
authorization: yourAuthorization,
'content-type': 'application/xml' },
body: xml_variable
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
//console.log(body);
expect(response.statusCode).toBe(200);
done();
});
});
});
这将成功地将XML发布到API,并以
body
的形式获得回复。我宁愿能在frisby.js中做到这一点,所以我仍然对人们的解决方案持开放态度。虽然不是我问题的直接答案,但万一其他人也有同样的问题……你可以把注意力从frisby
中移开,退后一步,使用jasmine node
——在你的frisby\u spec.js
文件中!Node.js有一个request
包,可以让你发布任何东西,所以你可以执行一个Jasmine descripe/it
describe('Stuff', function() {
it('DoIt', function(done) {
var options = {
method: 'POST',
url: envSetup.URL + '/' + resource,
qs: { action: 'basic' },
headers:
{ accept: 'application/xml',
authorization: yourAuthorization,
'content-type': 'application/xml' },
body: xml_variable
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
//console.log(body);
expect(response.statusCode).toBe(200);
done();
});
});
});
这将成功地将XML发布到API,并以body
的形式获得回复。我希望能够在frisby.js中实现这一点,因此我仍然愿意接受人们的解决方案。这里是官方答案:为了发送XML,您必须将请求正文作为标题的一部分发送
frisby.create('Post XML to api')
.post(someUrl, {}, {
headers: headers4,
body: xml1
}
)
//.inspectRequest()
//.inspectBody()
.expectHeaderContains('Content-Type', 'application/xml')
.expectStatus(200)
.toss();
您可以看到,我在.post(url,body,header)
格式中将主体部分留空,并带有{}。然后在第三个.post变量中给它一个body:xmlVariable
这里的另一个示例:这里是官方答案:为了发送XML,您必须将请求正文作为标题的一部分发送
frisby.create('Post XML to api')
.post(someUrl, {}, {
headers: headers4,
body: xml1
}
)
//.inspectRequest()
//.inspectBody()
.expectHeaderContains('Content-Type', 'application/xml')
.expectStatus(200)
.toss();
您可以看到,我在.post(url,body,header)
格式中将主体部分留空,并带有{}。然后在第三个.post变量中给它一个body:xmlVariable
另一个例子是: