在 pactdsl 请求正文中使用正则表达式
Using regex in pactdsl request body
我希望我的契约服务器在使用 Header Content-Type: application/x-www-form-urlencoded
进行 POST 调用时 return 自定义响应。
但是,POST 调用的主体并不总是相同的,只有前缀保持不变。
例如,它必须 return 相同的东西,无论我用 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 是否支持请求部分的某种正文匹配?
你可以match using a Regex to validate your body. The body
itself in the DSL is the actual body (with fake data) that is suppose to be returned for an interaction, without actually adding extra matchers. If you want an 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)
第一个参数是正则表达式的字符串表示,而第二个参数是交互实际传递的字符串,需要通过正则表达式测试。
我希望我的契约服务器在使用 Header Content-Type: application/x-www-form-urlencoded
进行 POST 调用时 return 自定义响应。
但是,POST 调用的主体并不总是相同的,只有前缀保持不变。
例如,它必须 return 相同的东西,无论我用 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 是否支持请求部分的某种正文匹配?
你可以match using a Regex to validate your body. The body
itself in the DSL is the actual body (with fake data) that is suppose to be returned for an interaction, without actually adding extra matchers. If you want an 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)
第一个参数是正则表达式的字符串表示,而第二个参数是交互实际传递的字符串,需要通过正则表达式测试。