Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Karate 空手道-匹配两个复杂的混合json_Karate - Fatal编程技术网

Karate 空手道-匹配两个复杂的混合json

Karate 空手道-匹配两个复杂的混合json,karate,Karate,下面的问题与此非常相似:我浏览了“建议包含快捷方式”,但找不出答案 我需要比较两个json文件,但使用contains关键字。为什么只包含?因为在某些情况下,我只需要匹配json文件中的一些选定字段。下面是示例和代码 Json文件1:Test.Json { "webServiceDetail":{ "feature":{ "featureCd":"ABCD", "imaginaryInd":"100.0", "extraIn

下面的问题与此非常相似:我浏览了“建议包含快捷方式”,但找不出答案

我需要比较两个json文件,但使用contains关键字。为什么只包含?因为在某些情况下,我只需要匹配json文件中的一些选定字段。下面是示例和代码

Json文件1:Test.Json

{
   "webServiceDetail":{
      "feature":{
         "featureCd":"ABCD",
         "imaginaryInd":"100.0",
         "extraInd1":"someRandomValue1"
      },
      "includefeatureList":[
         {
            "featureCd":"PQRS",
            "featureName":"Checking SecondAddOn Service",
            "extraInd1":"someRandomValue1",
            "extraInd2":"someRandomValue1"
         },
         {
            "featureCd":"XYZ",
            "featureName":"Checking AddOn Service",
            "imaginaryInd":"50.0"
         }
      ]
   }
}
{
   "webServiceSummary":{
      "service":{
         "serviceCd":"ABCD"
      },
      "includeServicesList":[
         {
            "serviceCd":"XYZ",
            "serviceDescription": "Checking AddOn Service"
         },
         {
            "serviceDescription":"Checking SecondAddOn Service",
            "serviceCd":"PQRS",
            "randon":"FGDD"
         }
      ]
   }
}
Json文件2:Test1.Json

{
   "webServiceDetail":{
      "feature":{
         "featureCd":"ABCD",
         "imaginaryInd":"100.0",
         "extraInd1":"someRandomValue1"
      },
      "includefeatureList":[
         {
            "featureCd":"PQRS",
            "featureName":"Checking SecondAddOn Service",
            "extraInd1":"someRandomValue1",
            "extraInd2":"someRandomValue1"
         },
         {
            "featureCd":"XYZ",
            "featureName":"Checking AddOn Service",
            "imaginaryInd":"50.0"
         }
      ]
   }
}
{
   "webServiceSummary":{
      "service":{
         "serviceCd":"ABCD"
      },
      "includeServicesList":[
         {
            "serviceCd":"XYZ",
            "serviceDescription": "Checking AddOn Service"
         },
         {
            "serviceDescription":"Checking SecondAddOn Service",
            "serviceCd":"PQRS",
            "randon":"FGDD"
         }
      ]
   }
}
我的代码:

* def Test = read('classpath:PP1/data/test.json')
* def Test1 = read('classpath:PP1/data/Test1.json')
* def feature = Test.webServiceDetail.feature
* set expected.webServiceSummary.service
| path               | value                |
| serviceCd          | feature.featureCd    |

* def mapper = function(x){ return { serviceCd: x.featureCd, serviceDescription: x.featureName} }
* def expectedList = karate.map(Test.webServiceDetail.includefeatureList, mapper)
* set expected.webServiceSummary.includeServicesList = '#(^*expectedList)'
* match Test1.webServiceSummary.includeServicesList == expected.webServiceSummary.includeServicesList

现在,上面的代码非常有效,我也得到了成功的响应。但我担心的是我在这里匹配
是否包含任何
。我应该使用
包含
关键字进行验证。因为我需要确保
expected.webServiceSummary.includeDeviceList
中的所有参数都存在于
Test1.webServiceSummary.includeDeviceList
中;不是他们中的任何人或一些人。我试着用
#(^expectedList)
——来表示contains;但是没有成功。我知道这一系列的问题看起来很傻,但我搞不懂他们的行为

这将始终检查值
是否仅包含
expectedList
中的所有数组元素

'#(^^expectedList)' 

阅读文档:

对不起,我将要求您简化您的问题。我也觉得你不是在看文件,只是简单地走出去问问题。你也试过
“#”(^^^ blah)
读文档来理解它的意思。嗨,彼得,我读了文档,是的,也试过“#”(^^^ expectedList)”,但没有成功。正如我所说,上面的代码对我来说是有效的,但根据它与“任何”参数匹配的含义,并不是所有参数都匹配;我需要最少的这些参数来复制问题。您可以忽略除Json文件1和Json文件2之外的所有内容。抱歉问了些蹩脚的问题;我为此工作了一天,没有得到回复。我不明白你的问题。对不起,我是这么说的,答案是
”#(^^expectedList)