【发布时间】:2021-08-12 12:32:32
【问题描述】:
使用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中创建这样的规则吗?
【问题讨论】:
-
所以你的请求正文是一个 JSON 对象数组,可以包含 fieldA 或 fieldB?并且您想在每个 JSON 对象中找到 fieldA 或 fieldB 时进行匹配?
标签: wiremock wiremock-standalone