我正在使用'chai-http'来测试其余的API和'mock-http-server'来模拟http请求。我可以通过执行以下操作来实现模拟GET请求 -
it ('API GET TEST', function (done) {
mockserver.on({
method: 'GET',
path: '/v1/myAPI',
reply: {
status: 200,
headers: {"content-type": "application/json"},
body: JSON.stringify(response)
}
});
chai.request(myapp)
.get('/v1/myAPI')
.end(function(err, res) {
res.should.have.status(200);
res.should.be.json;
done();
})
});
我的chai请求正确获取了我从mockserver GET / v1 / myAPI发送的响应。
我想要做的是模拟一个帖子请求,并根据帖子正文我想发送回复。
mockserver.on({
method : 'POST',
path : '/v1/myPOSTAPI',
reply: {
status: 200,
headers: { "content-type": "application/json" },
body: function(req) {
if (req.body.id == 1) {
JSON.stringify(response1);
} else {
JSON.stringify({"error" : "Not Found"});
}
}
}
});
我的POST正文是 -
{
id : 1
}
但是当我使用模拟API进行发布时,我的'req'对象不包含post body。如何通过使用'mock-http-server'模拟发布请求来获得帖子正文?
答案 0 :(得分:0)
https://github.com/spreaker/node-mock-http-server
server.on({
method: 'POST',
path: ''/v1/myPOSTAPI'',
filter: function (req) {
return _.isEqual(req.body, {id : 1}) // use some function to equal req data
},
reply: {
status: 201,
headers: { "content-type": "application/json" },
body: function(req) {
if (req.body.id == 1) {
JSON.stringify(response1);
} else {
JSON.stringify({"error" : "Not Found"});
}
}
}
});