我正在尝试在提供者端运行PACT测试,但我不知道如何操作从Pact文件中获得的请求正文。我需要这样做,因为我必须使用State步骤中的ID。
就我而言,我需要在State步骤中执行一个请求,然后在实际的Pact验证测试中使用该请求的响应。因此,我想用国家中获得的值替换协定文件中的值。
另外,由于更加复杂,我的身体是XML。所以这就是我的契约请求的样子:
"request": {
"method": "POST",
"path": "/path/url",
"headers": {
"Content-Type": "application/xml"
},
"body": "<note> <to>John</to> <from>Jane</from> <subject>Reminder</subject> </note>"
}
正如我所说,在提供者状态中,我将有一个请求,并且对此的响应将被称为“玛丽”。因此,我的问题是执行验证测试时,如何在Pact请求正文中将“ Jane”替换为“ Mary”?谢谢。
答案 0 :(得分:1)
我设法解决了我的问题,在TargetRequestFilter中修改了请求。
@TargetRequestFilter
public void updateRequest(HttpPost request) {
HttpEntity entity = request.getEntity();
String body = EntityUtils.toString(entity);
body = replace(body, "Jane", "Mary");
entity = new StringEntity(body);
request.setEntity(entity);
}
这段代码将在调用之前修改请求,并发送所需的值,而不是我们在Pact文件中拥有的值。