代码之家  ›  专栏  ›  技术社区  ›  Dan Bmd

在pactdsl请求正文中使用regex

  •  0
  • Dan Bmd  · 技术社区  · 6 年前

    我希望我的pact服务器在使用标头进行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是否支持请求部件上的某种正文匹配?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Timothy Jones    6 年前

    你可以 match using a Regex 验证你的身体。这个 body DSL中的自身是实际的主体(带有假数据),假设要为交互返回,而不实际添加额外的匹配器。如果你想 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)
    

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