0

我希望我的协议服务器在使用 Header 进行 POST 调用时返回自定义响应Content-Type: application/x-www-form-urlencoded
但是,POST 调用的主体并不总是相同的,只有一个前缀保持不变。
例如,它必须返回相同的东西,无论我用 body
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 是否支持请求部分的某种正文匹配?

4

1 回答 1

1

您可以使用正则表达式匹配来验证您的身体。DSL 中的body本身是假设为交互返回的实际主体(带有假数据),而实际上没有添加额外的匹配器。如果您想要一个示例,请查看 jvm 消费者的测试代码

在你的情况下,你会这样做:

.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)

第一个参数是正则表达式的字符串表示,而第二个是实际传递给交互的字符串,它需要通过正则表达式测试。

于 2018-04-03T03:48:38.280 回答