Karate 空手道-验证整个json响应的模式

Karate 空手道-验证整个json响应的模式,karate,Karate,我正在使用空手道验证GET请求的整个json响应 下面是来自请求的json响应示例(我只为items显示了两个元素) 以下是我试图验证的方法: And match response.*.* == """ { "createdById" : '#string', "createdByName" : '#string', "changedByName" : '#string', "oid" : '#string', "links" : '#obj

我正在使用空手道验证GET请求的整个json响应

下面是来自请求的json响应示例(我只为items显示了两个元素)

以下是我试图验证的方法:

 And match response.*.* ==
    """
  {
    "createdById" : '#string',
    "createdByName" : '#string',
    "changedByName" : '#string',
    "oid" : '#string',
    "links" : '#object',
    "name" : '#string'
  }
    """
但是,我得到了一个断言错误:
原因:实际值与映射不一样。如果我尝试在花括号周围放上方括号,我会得到
原因:实际数组和预期数组的大小不一样
。此外,我还尝试使用响应,如
$.[*].
等,但无法使其工作


提前谢谢

您需要注意JSON结构,并且更好地理解JsonPath。您可以剪切和粘贴以下内容,并查看其工作情况:

* def response = 
"""
[
  {
    "items": [
      {
        "createdById": "ADMIN",
        "createdByName": "ADMIN",
        "changedByName": "ADMIN",
        "oid": "121212fgfg2123",
        "links": {
          "self": {
            "href": "/internal/organiz/12345"
          },
          "subcom": []
        },
        "name": "NewETLTesting"
      },
      {
        "createdById": "ADMIN",
        "createdByName": "ADMIN",
        "changedByName": "ADMIN",
        "oid": "1212dfffg45",
        "links": {
          "self": {
            "href": "/internal/organiz/5a6e0"
          },
          "subcom": []
        },
        "name": "FromKarateModified"
      }
    ]
  }
]
"""
And match each response[0].items ==
"""
  {
    "createdById" : '#string',
    "createdByName" : '#string',
    "changedByName" : '#string',
    "oid" : '#string',
    "links" : '#object',
    "name" : '#string'
  }
"""

下面的模式将正确验证整个响应

* def refSubcom = {<object schema>}
* def refself = {href : '#string'}
* def refLinks = {self : '#object refself', subcom:'##[] refSubcom'}
* def optionalItemArr = 
    """
    {
        createdById:'#string',
        createdByName:'#string',
        changedByName:'#string',
        oid: '#string',
        links: '#object refLinks',
        name:'#string'
    }
    ###
* def itemData = 
    """
    {
        item : '##[] optionalItemArr'
    }
    """
* def reponseSchema = '##object itemData'

* def SuccessSchema = '##[] reponseSchema'
*def refSubcom={}
*def refself={href:'#string'}
*def refLinks={self:'#object refself',subcom:'##[]refSubcom'}
*def optionalItemArr=
"""
{
createdById:“#字符串”,
createdByName:“#字符串”,
changedByName:“#string”,
oid:“#字符串”,
链接:“#对象重新链接”,
名称:“#字符串”
}
###
*def itemData=
"""
{
项目:“##[]optionalItemArr”
}
"""
*def reponseSchema='##对象项数据'
*def SUCCESSCHEMA=“##[]响应模式”

您可以参考以下链接:

我们是否能够验证响应中的所有对象,如响应[*]。项?是否可能?
* def refSubcom = {<object schema>}
* def refself = {href : '#string'}
* def refLinks = {self : '#object refself', subcom:'##[] refSubcom'}
* def optionalItemArr = 
    """
    {
        createdById:'#string',
        createdByName:'#string',
        changedByName:'#string',
        oid: '#string',
        links: '#object refLinks',
        name:'#string'
    }
    ###
* def itemData = 
    """
    {
        item : '##[] optionalItemArr'
    }
    """
* def reponseSchema = '##object itemData'

* def SuccessSchema = '##[] reponseSchema'