空手道:我可以迭代 Json 数组响应并执行一些条件语句吗

Karate: Can I iterate on a Json array response and do some conditional statements

我的 json 数组响应如下所示:

response = [
{
"ID": "123",
"Name":"Test1",
"Data":{
      "Status":"Red",
      "Message":"user not valid",
      "Code": "ERROR-P1"
      }
},
{
"ID": "143",
"Name":"Test2",
"Data":{
      "Status":"Amber",
      "Message":"user data missing",
      "Code": "ERROR-P2"
      }
},
{
"ID": "133",
"Name":"Test3",
"Data":{
      "Status":"Green",
      "Message":"",
      "Code": ""
      }
}

json 数组中可以有更多条目具有相同的数据和状态。 我的用例是根据以下条件进行检查:如果我的 json 数组的状态为红色或琥珀色,则消息和代码不为空,类似地,如果我的状态为绿色,则消息和代码为空。 我需要遍历整个数组并验证这个场景。 并且还需要从数组 Json 响应中获取状态计数:红色、琥珀色和绿色。 空手道的最佳解决方案是什么? 任何帮助,将不胜感激。 谢谢

给你:

* def red = []
* def amber = []
* def green = []
* def fun = 
"""
function(x){ 
  if (x.Data.Status == 'Red') karate.appendTo(red, x);
  if (x.Data.Status == 'Amber') karate.appendTo(amber, x);
  if (x.Data.Status == 'Green') karate.appendTo(green, x);
}
"""
* karate.forEach(response, fun)
* assert red.length == 1
* match each red..Message == 'user not valid'
* match each amber contains { Data: { Status: 'Amber', Message: 'user data missing', Code: 'ERROR-P2' } }