【问题标题】:How to validate a response in karate when you don't know the structure?当您不知道结构时如何验证空手道的响应?
【发布时间】:2019-12-19 23:28:40
【问题描述】:

我正在尝试编写一些空手道测试来检查某些预期结构的响应。例如,有一个对象看起来像这样:

{
  'true|true':'disabled',
  'true|false':'locked',
  'false|false':'enabled',
  'false|true':'disabled',
  'default':'enabled'
}

但是,键和值可以是任何字符串。必须有一种方法来指定这一点,但我不知道如何以通用方式做到这一点。

本质上,我想测试的是 1)对象不为空,2)每个键和值都是一个字符串(不是对象,也不是 null)。

基本匹配如下所示:

* def objects = $fields..objects
  And match each objects ==
  """
  {
      key1: '#? isString(_)',
      key2: '#? isString(_)'
    }
    """

看起来键的名称必须事先知道,所以匹配表达式可能不是测试它的合适方法。

【问题讨论】:

    标签: karate


    【解决方案1】:

    您可以像这样提取所有键:

    * def keys = karate.keysOf(object)
    

    所以,一旦你有了它,你就在做生意:

    * def foo = { a: 1, b: 2 }
    * def keys = karate.keysOf(foo)
    * match each keys == '#string'
    * assert keys.length > 0
    

    请参阅 JSON 转换以了解其他想法,例如karate.forEach():https://github.com/intuit/karate#json-transforms

    【讨论】:

      猜你喜欢
      • 2018-08-28
      • 2019-12-13
      • 2019-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多