Karate 空手道-匹配两个动态响应

Karate 空手道-匹配两个动态响应,karate,Karate,我必须将我的WebService响应与其下游服务进行比较。但是,我的响应和下游响应中的ID不相同。我在下面给出了示例回复。同样,一个是REST服务,另一个是SOAP服务,但是我可以进行类型转换(这不是问题) MyWebService响应: "myWebServiceResponse": { "webServiceSummary": { "service": { "serviceCd": "ABCD", "serviceDescription": "Checking Main

我必须将我的WebService响应与其下游服务进行比较。但是,我的响应和下游响应中的ID不相同。我在下面给出了示例回复。同样,一个是REST服务,另一个是SOAP服务,但是我可以进行类型转换(这不是问题)

MyWebService响应:

"myWebServiceResponse": {
"webServiceSummary": {
  "service": {
    "serviceCd": "ABCD",
    "serviceDescription": "Checking Main Service",
    "hypotheticalInd": "100.0",
    "realInd": "200.0"
  },
  "includeServicesList": [
  {
    "serviceCd": "XYZ",
    "serviceDescription": "Checking AddOn Service",
    "hypotheticalInd": "50.0",
    "realInd": "60.0"
 },
 {
    "serviceCd": "PQRS",
    "serviceDescription": "Checking SecondAddOn Service",
    "hypotheticalInd": "100.0",
    "realInd": "200.0"
 }
  ]
    }
现在,下面是下游服务响应。我不能使用“match contains”,因为myWebServiceResponse和DownstreamService中的ID不同,而且还有许多额外的参数。你可以看到下面

下游服务响应:

"myWebServiceResponse": {
"webServiceSummary": {
  "service": {
    "serviceCd": "ABCD",
    "serviceDescription": "Checking Main Service",
    "hypotheticalInd": "100.0",
    "realInd": "200.0"
  },
  "includeServicesList": [
  {
    "serviceCd": "XYZ",
    "serviceDescription": "Checking AddOn Service",
    "hypotheticalInd": "50.0",
    "realInd": "60.0"
 },
 {
    "serviceCd": "PQRS",
    "serviceDescription": "Checking SecondAddOn Service",
    "hypotheticalInd": "100.0",
    "realInd": "200.0"
 }
  ]
    }
"myDownstreamResponse": {
"webServiceDetail": {
  "feature": {
    "featureCd": "ABCD",
    "featureName": "Checking Main Service",
    "imaginaryInd": "100.0",
    "actualInd": "200.0",
   "extraInd1": "someRandomValue1",
  },
  "includefeatureList": [
 {
    "featureCd": "PQRS",
    "featureName": "Checking SecondAddOn Service",
    "imaginaryInd": "100.0",
    "actualInd": "200.0",
    "extraInd1": "someRandomValue1",
    "extraInd2": "someRandomValue1"
 },
  {
    "featureCd": "XYZ",
    "featureName": "Checking AddOn Service",
    "imaginaryInd": "50.0",
    "actualInd": "60.0",
    "extraInd1": "someRandomValue1",
    "extraInd2": "someRandomValue1"
 }
  ]
    }

现在,我该如何匹配这两个回答?此外,您可以看到,很少有参数是随机的,无法通过逐行移动进行比较。仅为CD/指示灯分配相同的参数值。另外,我想知道如何根据一个主值提取和匹配参数。例如,我想使用“serviceCd”:“ABCD”并将所有与ABCD相关的参数与下游服务的参数进行比较。

有关一个更简单的示例,可以让您更好地理解这个概念,尤其是
karate.map()
,它甚至可以用于嵌套的JSON结构,请参见此处:

并阅读以下文件:


谢谢你,彼得。抱歉再问一次;你能告诉我在GitHub中使用函数(x)和karate.map的第二部分的相关主题吗?我有点理解你在这里做了什么;但是我想了解更多关于这个概念的信息。我无法在Git中找到相关主题。非常感谢。@sandeephegde这里有一个提示-在github页面中,只需按CTRL+F并键入“karate.map”@sandeephegde您能确认上面的方法是否对您有效吗?