Есть ли способ изменить тело запроса во время проверки PACT? - PullRequest
1 голос
/ 06 июня 2019

Я пытаюсь запустить тест PACT на стороне провайдера, и я не знаю, как манипулировать телом запроса, которое я получаю из файла Pact.Я должен сделать это, потому что мне нужно использовать идентификатор из шага состояния.

В моем случае мне нужно выполнить запрос в состоянии шага, а затем использовать ответ этого запроса в фактическом тесте проверки Pact.,Итак, я хотел бы заменить значение из файла пакта на значение, полученное в State.

Кроме того, для того, чтобы быть еще более сложным, мое тело - это XML.Итак, вот как выглядит мой запрос пакта:

"request": {
   "method": "POST",
   "path": "/path/url",             
   "headers": {
    "Content-Type": "application/xml"
   },
   "body": "<note> <to>John</to> <from>Jane</from> <subject>Reminder</subject> </note>"
}

Как я уже сказал, в штате Провайдера у меня будет запрос, и ответом будет, скажем, «Мэри».Поэтому мой вопрос заключается в том, как я могу заменить «Jane» на «Mary» в теле запроса Pact при выполнении проверочного теста?Спасибо.

1 Ответ

1 голос
/ 10 июня 2019

Мне удалось решить мою проблему, изменив запрос в 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.

...