【问题标题】:How to provide keys with special char in karate.filterKeys?如何在 karate.filterKeys 中为键提供特殊字符?
【发布时间】:2022-02-22 00:12:11
【问题描述】:

回复:

[
    {
        "key1":78,
        "key2":"value2",
        "key3": {
            "obj.key1":"objValue1",
            "obj.key2":1236527454,
        }
    },
    {
        "key1":89,
        "key2":"value2",
        "key3": {
            "obj.key1":"objValue1",
            "obj.key2":9885546755,
        }
    }
]

预期响应:

[
    {
        "key1":32,
        "key2":"value2",
        "key3": {
            "obj.key1":"objValue1",
            "obj.key2":8985436,
        }
    },
    {
        "key1":36,
        "key2":"value2",
        "key3": {
            "obj.key1":"objValue1",
            "obj.key2":655431,
        }
    }
]

key1、obj.key2 是动态值,在比较 JSON 的其余部分时需要忽略。

* match karate.filterKeys(response,['key1']) == karate.filterKeys(expectedResponse,['key1'])

它按预期工作,并在比较结果时忽略 key1。

* match karate.filterKeys(response,['key1','key3["obj.key2"]') == karate.filterKeys(expectedResponse,['key1','key3["obj.key2"]']) 

以上抛出错误。我也试过使用:

* match karate.filterKeys(response,['key1',key3['obj.key2']) == karate.filterKeys(expectedResponse,['key1',key3['obj.key2']]) 

因为这通常是在空手道中使用特殊字符键的方式,但再次出现错误。

有人可以提供解决此问题的方法吗?

【问题讨论】:

    标签: json karate dsl


    【解决方案1】:

    我推荐一种不同的方法,因为您有一个复杂的嵌套和具有可怕键的 JSON。使用JSON transforms 得到你想要的“形状”的数据,然后事情就变得简单了。

    * def fun = 
    """
    function(x) {
      var y = {};
      y.key2 = x.key2;
      y.key3 = {};
      y.key3['obj.key1'] = x.key3['obj.key1'];
      return y;
    }
    """
    * def temp = karate.map(response, fun)
    * match each temp == { key2: 'value2', key3: { 'obj.key1': 'objValue1' } }
    

    【讨论】:

    • 我们可以使用 json.remove(key) 以某种方式删除我不想比较的键吗? stackoverflow.com/questions/51077958/…虽然我不知道如何在数组中使用它
    • @Surya 欢迎您贡献代码。正如我所说,您的 JSON 设计非常糟糕。尝试理解我的答案或寻找其他框架
    猜你喜欢
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多