使用KARATE进行JSON响应验证

时间:2017-12-14 07:28:54

标签: json karate

我对以下回复的验证感到困惑。

当我使用空手道发出获取请求时,我得到以下响应,我想验证它。

    My Response is: {
      "response": [
        {
          "tagName": "CaseTag",
          "value": "CaseTagMckAuto_TagValueOne",
          "entityType": "Case",
          "partitionId": 1,
          "appId": 1,
          "id": 46,
          "tagId": 1,
          "entityId": 1
        },
        {
          "tagName": "CaseTag",
          "value": "CaseTagMckAuto_TagValue",
          "entityType": "Case",
          "partitionId": 1,
          "appId": 1,
          "id": 45,
          "tagId": 1,
          "entityId": 1
        }
      ]
    }

我试过了:

And match response[0].tagName contains ['CaseTag']


Then match each res contains
    ...
           {
              {tagName: 'CaseTag', value: 'CaseTagMckAuto_TagValueOne', 
               entityType: 'Case', partitionId: 1, appId: 1,id: 46, 
               tagId: 1, entityId:1}
           }
    ...

And match response[0] == {tagName: 'CaseTag', value: 
      'CaseTagMckAuto_TagValueOne', entityType: 'Case', partitionId: 1, 
       appId: 1,id: 46, tagId: 1, entityId:1}

All three statements fails json it is not valid json array when i try giving

And match response == {tagName: 'CaseTag', value: 
      'CaseTagMckAuto_TagValueOne', entityType: 'Case', partitionId: 1, 
       appId: 1,id: 46, tagId: 1, entityId:1}        

它说它不是String。         你能帮我验证一下吗?

1 个答案:

答案 0 :(得分:2)

看起来你对嵌套感到困惑。这是一个适合我的示例,只需将其粘贴到要素文件中,无需HTTP:

* def response = 
"""
[
   {
      "tagName":"CaseTag",
      "value":"CaseTagMckAuto_TagValueOne",
      "entityType":"Case",
      "partitionId":1,
      "appId":1,
      "id":46,
      "tagId":1,
      "entityId":1
   },
   {
      "tagName":"CaseTag",
      "value":"CaseTagMckAuto_TagValue",
      "entityType":"Case",
      "partitionId":1,
      "appId":1,
      "id":45,
      "tagId":1,
      "entityId":1
   }
]
"""
* match response == '#[2]'
* match response[0].tagName == 'CaseTag'
* match each response == { tagName: 'CaseTag', value: '#string', entityType: 'Case', partitionId: 1, appId: 1, id: '#number', tagId: 1, entityId: 1 }
* match each response contains { tagName: 'CaseTag', entityType: 'Case', partitionId: 1, appId: 1, tagId: 1, entityId: 1 }

了解您的JSON如何在其中response。如果确实如此,请在使用match之前执行此操作,使其与上面的内容相同:

* def response = response.response