在空手道 Netty 场景中匹配请求中的键值对
Posted
技术标签:
【中文标题】在空手道 Netty 场景中匹配请求中的键值对【英文标题】:Matching key value pairs in a request in a Karate Netty scenario 【发布时间】:2020-12-16 22:06:21 【问题描述】:我正在为 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 的内容,但这也不行。
【问题讨论】:
【参考方案1】:好消息,在空手道 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
中定义,以便在需要时更轻松:https://***.com/a/59415796/143475
【讨论】:
太棒了。这让我的一周彼得。谢谢!以上是关于在空手道 Netty 场景中匹配请求中的键值对的主要内容,如果未能解决你的问题,请参考以下文章
HashMapHashTableConcurrentHashMap详解
对GET/POST请求返回cookie中的键值对进行重新组合