标题可能看起来有些混乱。我想在Mocklab中做的是创建一个存根,该存根将基于该请求的json主体上的特定参数或一组参数为我提供一定的响应。
假设请求的主体如下:
{
"A":{
"B":{
"key":"value",
"key":"value" },
"C":{
"key":"value",
"key":"value"
},
}
我希望它遍历整个主体,并在C中查找键值对,如果找到该键对,则给我设定的响应。身体的其余部分是可选的。
我将描述的大多数信息仅来自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