使用wiremock-standalone(版本2.29.1),我想验证一个请求,它的主体包含一个包含可选属性的对象数组。
例如,考虑这个请求:
请求正文(JSON 格式)
{
"foo": [
{ "bar": "1" },
{ "qux": "oh hai" },
{ "bar": "ohnoes" }
]
}
假设我只想在所有foo.bar
属性都存在或仅包含一个数字时才匹配请求(这只是为了举例)。上面的示例不应匹配(第三个对象具有bar
非数字字符的属性)。
我尝试了不同的方法,我得到的最接近的是:
{
"matchesJsonPath": {
"expression": "$.foo[*].bar",
"or": [
{ "matches": "^\\d$" },
{ "absent": true }
]
}
}
有2个问题:
- 如果根本没有
bar
属性,则请求不匹配 - 如果至少 1 个
bar
属性通过检查,则整个请求通过,即使其他bar
值无效(上面的示例通过)
有谁知道如何在wiremock中创建这样的规则?