【问题标题】:Karate; Counting # of K:V pairs within an object in a json array空手道;计算 json 数组中对象内的 K:V 对数
【发布时间】:2019-07-08 18:14:43
【问题描述】:

为了在编写测试之前进行调试,我希望获取数组中一个对象中键:值对的数量。
现在,我有这个:

"items": [
   {
      "id": "6b0051ad-721d-blah-blah-4dab9cf39ff4",
      "external_id": "blahvekmce",
      "filename": "foo-text_field-XYGLVU",
      "created_date": "2019-02-11T04:10:31Z",
      "last_update_date": "2019-02-11T04:10:31Z",
      "file_upload_date": "2019-02-11T04:10:31Z",
      "deleted_date": null,
      "released_and_not_expired": true,
      "asset_properties": null,
      "file_properties": null,
      "thumbnails": null,
      "embeds": null
    }
  ]

当我写出: * print response.items.length // returns 1

当我写出: * print response.items[0].length 它不返回任何东西

有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: automated-tests karate


    【解决方案1】:
    count = 0
    for (var v in response.items[0]) {
      count = count + 1;
    }
    print(count)
    

    【讨论】:

    • 如果您能添加进一步的解释来帮助读者,这将对读者(尤其是学习者)有所帮助。仅代码答案被认为是不礼貌的。
    【解决方案2】:

    有多种方法,但这应该可行,而且您还可以了解如何获取密钥:

    * def keys = []
    * eval karate.forEach(response.items[0], function(x){ keys.add(x) })
    * def count = keys.length
    * match count == 12
    

    参考文档:https://github.com/intuit/karate#json-transforms

    【讨论】:

    • 如何将eval karate.forEach(response.items[0], function(x){ keys.add(x) }) 拉到“后台”中,以便在其他情况下重复使用它?
    【解决方案3】:

    Karate 现在提供karate.sizeOf() API 来获取对象的计数。

    * def object = { a: 1, b: 'hello' }
    * def count = karate.sizeOf(object)
    * match count == 2
    

    参考:https://github.com/karatelabs/karate#the-karate-object

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多