如何解决JSON Payload 的 Wiremock 请求模板,具有多个允许的键,但响应相同
尝试模拟一个 API 端点,该端点允许请求具有 2 个可能的有效负载,但响应相同:
请求选项 1
{
"key1": "value1"
}
请求选项 2
{
"key2": "value2"
}
基于 Request Templating documentation,我看到有一个选项可以为 matchesJsonPath
定义一些正则表达式。
但是,我无法弄清楚如何提供允许 key1
或 key2
的配置。
这是我尝试过的,但似乎不起作用:
{
// ... other configs
"request": {
"bodyPatterns": [
{
"matchesJsonPath": "$.(key1|key2)"
}
]
}
}
是否可以提供 1 个支持两种有效载荷的定义,还是我必须创建 2 个存根?
注意:我使用的是 standalone Wiremock Docker image,因此使用 Java 进行更复杂处理的选项有限。
解决方法
您的 JsonPath 匹配器格式不正确。您需要应用过滤器/脚本(用 ?()
表示)。有关 JsonPath 匹配器如何工作的更多信息 can be found here.
以下是格式正确的 JsonPath 匹配器的样子:
{
"matchesJsonPath": "$[?(@.key1 || @.key2)]"
}
如果您需要 key1
和 key2
具有特定值,则如下所示:
{
"matchesJsonPath": "$[?(@.key1 == 'value1' || @.key2 == 'value2')]"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。