Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.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 空手道;匹配包含“匹配”;for xml的工作方式与JSON不同_Karate - Fatal编程技术网

Karate 空手道;匹配包含“匹配”;for xml的工作方式与JSON不同

Karate 空手道;匹配包含“匹配”;for xml的工作方式与JSON不同,karate,Karate,我注意到,“match contains”用于检查另一个xml结构中是否包含与json对应的xml结构不同的xml结构。举个例子: * def expectedResult = """ <?xml version="1.0" encoding="UTF-8"?> <response>

我注意到,“match contains”用于检查另一个xml结构中是否包含与json对应的xml结构不同的xml结构。举个例子:

          * def expectedResult =
            """
              <?xml version="1.0" encoding="UTF-8"?>
              <response>
                <id>1</id>
                <id>2</id>
                <id>3</id>
              </response>
            """
          * header Accept = xml
      Given path 'some\path'
       When method GET
       Then status 200
       ## If response contains - 
       ## <response><id>1</id></response>
       
       ## The following match will fail with - 
       ## "actual and expected arrays are not the same size - 1:3"
        And match response contains expectedResult
*def expectedResult=
"""
1.
2.
3.
"""
*头接受=xml
给定路径“some\path”
当方法得到
然后状态200
##如果响应包含-
## 1
##以下匹配将失败,原因是-
##“实际数组和预期数组的大小不同-1:3”
匹配响应包含expectedResult
如果它是JSON结构,它将通过,因为1包含在1,2,3的列表中。但在XML中,它仍然在检查数组大小。这就是它的工作原理吗

更新:这与另一个问题不同。我试图将我拥有的引用XML文件与API返回的XML结构进行比较。您链接到的问题是比较JSON引用文件和XML响应。因此,这就引出了一个问题,在空手道中,我是否必须将我的引用XML和响应XML转换为json才能执行“包含”?

XML与json有一些基本的“形状”差异。我让您自己去弄清楚,其中一个挑战是“根”标记的概念,而JSON没有。所以他们不会像你所期望的那样“匹配”

一个技巧-如果有疑问,将XML转换为JSON。以下是一个例子:

* def expected =
"""
<?xml version="1.0" encoding="UTF-8"?>
<response>
  <id>1</id>
  <id>2</id>
  <id>3</id>
</response>
"""
* json temp = $expected/response
* match temp.response.id == ['1', '2', '3']
*需要def=
"""
1.
2.
3.
"""
*json temp=$expected/response
*匹配temp.response.id=['1','2','3']

我理解根标记的概念。让我困惑的是,为什么XML除了检查结构中是否包含给定元素外,还要检查元素的数量?转换JSON意味着不仅要转换来自API的响应,还要转换我用来与响应进行比较的大引用xml文件。我不希望您能按原样使用XML