wiremock - 具有多个允许键但响应相同的 JSON 有效负载的 Wiremock 请求模板
问题描述
尝试模拟一个 API 端点,该端点允许具有 2 个可能有效负载的请求,但响应相同:
请求选项 1
{
"key1": "value1"
}
请求选项 2
{
"key2": "value2"
}
根据请求模板文档,我看到有一个选项可以为matchesJsonPath
. 但是,我无法弄清楚如何提供允许key1
或key2
.
这是我尝试过的,但它似乎不起作用:
{
// ... other configs
"request": {
"bodyPatterns": [
{
"matchesJsonPath": "$.(key1|key2)"
}
]
}
}
是否可以提供 1 个支持两种有效负载的定义,还是必须创建 2 个存根?
注意:我使用的是独立的 Wiremock Docker 映像,因此使用 Java 进行更复杂处理的选项是有限的。
解决方案
您的 JsonPath 匹配器格式不正确。您需要应用过滤器/脚本(用 表示?()
)。可以在此处找到有关 JsonPath 匹配器如何工作的更多信息。
以下是正确格式化的 JsonPath 匹配器的样子:
{
"matchesJsonPath": "$[?(@.key1 || @.key2)]"
}
如果您需要key1
andkey2
具有特定值,则如下所示:
{
"matchesJsonPath": "$[?(@.key1 == 'value1' || @.key2 == 'value2')]"
}
推荐阅读
- text-to-speech - TTS API 中本地语音合成器的含义是什么
- android - 如何使用一个按钮来获取文本并将文本设置为 3 个不同的 EditTexts 和 TextViews
- javascript - Google API:表格图表中列单元格的闪烁背景颜色
- javascript - javascript中的构造函数中的对象文字和具有值的类之间有什么区别?
- php - 如何在 postRemove 事件期间获取实体的对象 ID?
- c# - 有没有办法将复杂类型映射到字符串?
- kendo-ui - Kendo UI 组件是否可免费用于 Excel 导入/导出?
- c# - 创建对象的唯一 HashSet
- java - 如何在 Spock Groovy 的 THEN 阶段中的预期模拟方法调用之后设置变量?
- python - 从 MODIS HDFEOS 数据生成网格信息文件