首页 > 解决方案 > Wiremock:无法根据从 json 正文中查找所需参数来设置存根

问题描述

标题可能看起来有点混乱。在 Mocklab 中,我想要做的是创建一个存根,它会根据该请求的 json 主体上的特定参数或一组参数给我一个特定的响应。

假设请求的正文如下所示:

{
 "A":{
     "B":{
         "key":"value",
          "key":"value" },
      "C":{
          "key":"value",
          "key":"value"
},

}

我希望它遍历整个主体,并在 C 中查找键值对,如果找到该对,则给我一个设置的响应。身体的其余部分是可选的。

标签: javajsonapiwiremock

解决方案


我将描述的大部分信息都取自这里

我认为你可以这样做:

givenThat(post(urlEqualTo("/foo")).withRequestBody(matchingJsonPath("$.A.B.C.key", equalTo("value")))

如果您需要匹配多个 key:value 对,您可以添加额外withRequestBody的 s.

givenThat(post(urlEqualTo("/foo")).withRequestBody(matchingJsonPath("$.A.B.C.key2", equalTo("value"))).withRequestBody(matchingJsonPath("$.A.B.C.key2, equalTo("value")))

如果您的逻辑开始变得更加棘手,我建议您考虑创建一个自定义匹配器


推荐阅读