在 Karate Netty 场景中匹配请求中的键值对
Matching key value pairs in a request in a Karate Netty scenario
我正在为 Karate Netty 模拟服务编写功能,我正在尝试使用场景来匹配请求中的键值对。
例如:
在像这样具有嵌套对象数组的请求中,我希望在任何 Id 值为 null 时触发此功能:
{
"Array": [
{
"Id": "legitId"
},
{
"Id": null
}
],
}
场景:pathMatches('path/to/my/endpoint') && methodIs('post') && request.Array.contains('Id': null)
文档说我可以在场景中使用 JS 表达式,但是我很难找到 nashorn 可以解析的可以做到这一点的东西。我已经尝试了 JSON.stringify 和 indexOf,一些在空手道测试中用于匹配的语法,仍然没有成功。我还尝试使用 Array 索引的通配符来表示类似 Array[*].Id == null 的内容,但这也不行。
好消息,在空手道 0.9.6 中,您可以为此使用 JsonPath 和 karate.match()
:
Scenario: karate.match("request.Array[*].Id contains null").pass
更多详情:https://github.com/intuit/karate/issues/1202#issuecomment-653632397
另请参阅此其他答案,了解有关使用自定义函数的想法。在 Background
中定义,以便在需要时更容易:
我正在为 Karate Netty 模拟服务编写功能,我正在尝试使用场景来匹配请求中的键值对。
例如:
在像这样具有嵌套对象数组的请求中,我希望在任何 Id 值为 null 时触发此功能:
{
"Array": [
{
"Id": "legitId"
},
{
"Id": null
}
],
}
场景:pathMatches('path/to/my/endpoint') && methodIs('post') && request.Array.contains('Id': null)
文档说我可以在场景中使用 JS 表达式,但是我很难找到 nashorn 可以解析的可以做到这一点的东西。我已经尝试了 JSON.stringify 和 indexOf,一些在空手道测试中用于匹配的语法,仍然没有成功。我还尝试使用 Array 索引的通配符来表示类似 Array[*].Id == null 的内容,但这也不行。
好消息,在空手道 0.9.6 中,您可以为此使用 JsonPath 和 karate.match()
:
Scenario: karate.match("request.Array[*].Id contains null").pass
更多详情:https://github.com/intuit/karate/issues/1202#issuecomment-653632397
另请参阅此其他答案,了解有关使用自定义函数的想法。在 Background
中定义,以便在需要时更容易: