有没有办法在PACT验证期间修改请求正文?

时间:2019-06-06 06:47:16

标签: pact

我正在尝试在提供者端运行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”?谢谢。

1 个答案:

答案 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文件中拥有的值。