在空手道 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中的键值对进行重新组合

如何动态添加solr中的键值对?

HTTP协议Ajax请求

Spark入门--Spark的combineByKeysortBykey

BigQuery:将数组中的键值对转换为列