Я использую Spring Cloud Contract для создания заглушек для службы REST, чтобы я мог протестировать с клиентом REST. У меня есть тупик, работающий в приложении Spring Boot, и все работает так, как ожидалось. Проблема, с которой я сталкиваюсь, заключается в том, что я хотел бы видеть элементы запросов в ответах, чтобы лучше имитировать возможное поведение службы REST. Например, в этом контракте, я хотел бы, что передается в поле «код» в запросе появляться выплюнул в ответ:Использование Spring Cloud Contract Groovy DSL, как я могу параметризовать ответ для включения значений из запроса?
package contracts
org.springframework.cloud.contract.spec.Contract.make {
request {
method('POST')
url $("/resource")
body ([
code : $(client(regex('[a-zA-Z0-9]{5,32}')))
])
}
response {
status 200
body([
code: ???
])
}
}
Очевидно, что вход «код» может быть все, что совпадает с регулярным выражение, и поэтому фактическое значение неизвестно до времени выполнения. Есть ли что-нибудь, что я могу поставить вместо «???» вернуть код, указанный в запросе? Я попытался доступа, например:
request.body.serverValue['code']
, но это значение, кажется, генерируется во время компиляции, возможно, для того, чтобы авто-генерации тестов в ContractVerifierTest.java под сгенерированных-тест-источников.
Можно ли это сделать? Является ли это подходящим использованием контракта Spring Cloud?
Я обновил ответ, потому что, фактически начиная с 1.1.0, вы можете это сделать. –
oh, отлично @MarcinGrzejszczak, спасибо за обновление! – billshwah47