标题可能看起来有点令人困惑。在 Mocklab 中,我想做的是创建一个 stub ,它将根据该请求的 json 主体上的特定参数或一组参数给我一个特定的响应。
假设请求正文如下所示:
{
"A":{
"B":{
"key":"value",
"key":"value" },
"C":{
"key":"value",
"key":"value"
},
}
我希望它遍历整个主体,并在 C 中查找键值对,如果找到该对,则给我一个设置响应。 body 的其余部分是可选的。
最佳答案
我将描述的大部分信息都取自 here .
我认为你可以做这样的事情:
givenThat(post(urlEqualTo("/foo")).withRequestBody(matchingJsonPath("$.A.B.C.key", equalTo("value")))
如果您需要匹配多个键:值对,您可以添加额外的 withRequestBody
。
givenThat(post(urlEqualTo("/foo")).withRequestBody(matchingJsonPath("$.A.B.C.key2", equalTo("value"))).withRequestBody(matchingJsonPath("$.A.B.C.key2, equalTo("value")))
如果你的逻辑开始变得有点棘手,我建议考虑创建一个 custom matcher
关于java - Wiremock:无法根据从 json 正文中查找所需参数来设置 stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59453733/