我希望我的pact服务器在使用标头Content-Type: application/x-www-form-urlencoded
进行POST调用时返回自定义响应。
但是,POST调用的主体并不总是相同,只有前缀保持不变。
例如,它必须返回相同的内容,无论我将其称为正文input_text=LOGSomeStuffHERE
,还是input_text=LOGAnoutherStuff
<(如您所见,input_text=LOG
是恒定部分)
这是我尝试过的:
.uponReceiving("POST cusom body")
.path("/path")
.method("POST")
.headers(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_FORM_URLENCODED.getMimeType())
.body("input_text=LOG*")
.willRespondWith()
.status(200)
...
PactDsl是否支持请求部分的某种身体匹配?
答案 0 :(得分:1)
您可以match using a Regex验证您的身体。 DSL中的body
本身就是实际的主体(带有假数据),假设要为交互返回,而不实际添加额外的匹配器。如果你想要example of this, look at the test code for the jvm consumer。
在您的情况下,您可以:
.uponReceiving("POST cusom body")
.path("/path")
.method("POST")
.headers(HttpHeaders.CONTENT_TYPE,
ContentType.APPLICATION_FORM_URLENCODED.getMimeType())
.body(PactDslJsonRootValue.stringMatcher("^input_text\=LOG.*",
"input_text=LOG_something"))
.willRespondWith()
.status(200)
第一个参数是正则表达式的字符串表示,而第二个参数是实际传递的字符串,需要通过正则表达式测试。