不知道如何在空手道中验证响应?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不知道如何在空手道中验证响应?相关的知识,希望对你有一定的参考价值。

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

{
  '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(_)'
    }
    """

似乎必须预先知道键的名称,所以匹配表达式可能不是测试此键的适当方法。

答案

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

* def kays = 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

以上是关于不知道如何在空手道中验证响应?的主要内容,如果未能解决你的问题,请参考以下文章

如何在空手道上集成 socket.io

如何在空手道框架的特征文件中读取响应头值?

如何将黄瓜报告实用程序与空手道框架相结合?

空手道-如何使用从响应数组接收的值循环Soap请求

如何使用空手道实现基本身份验证?

如何从空手道中的Java API中检索值数组?