空手道与名称空间不匹配xml

时间:2019-07-16 14:52:27

标签: karate

我有两条带有命名空间的xml消息,这些命名空间本质上是相同的xml,但是match表示它们并不相同。

请查看以下功能。 xmlString1和xmlString2本质上是相同的xml。只有名称空间前缀不同。我不确定match是否匹配xml相等性? 有没有一种方法可以使XML与名称空间匹配?

Feature: Test xml match
  Scenario: test xml match with namespaces
    * def xmlString1 =
    """
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:b="anotherUri">
      <soapenv:Header/>
      <soapenv:Body>
        <b:validateEmailAddressRequest>
          <request>
           <email>some@domain.com</email>
          </request>
         </b:validateEmailAddressRequest>
        </soapenv:Body>
     </soapenv:Envelope>
    """

    * def xmlString2 =
    """
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="anotherUri">
      <soapenv:Header/>
      <soapenv:Body>
        <a:validateEmailAddressRequest>
          <request>
           <email>some@domain.com</email>
          </request>
         </a:validateEmailAddressRequest>
        </soapenv:Body>
     </soapenv:Envelope>
    """

    * xml xml1  = xmlString1
    * xml xml2  = xmlString2

    * match xml1 == xml2

16:49:04.363 [main] ERROR com.intuit.karate - assertion failed: path: /soapenv:Envelope/_/soapenv:Body, actual: '<soapenv:Body><b:validateEmailAddressRequest><request><email>some@domain.com</email></request></b:validateEmailAddressRequest></soapenv:Body>', expected: '<soapenv:Body><a:validateEmailAddressRequest><request><email>some@domain.com</email></request></a:validateEmailAddressRequest></soapenv:Body>', reason: all key-values did not match, expected has un-matched keys: [a:validateEmailAddressRequest]
xml-match.feature:34 - path: /soapenv:Envelope/_/soapenv:Body, actual: '<soapenv:Body><b:validateEmailAddressRequest><request><email>some@domain.com</email></request></b:validateEmailAddressRequest></soapenv:Body>', expected: '<soapenv:Body><a:validateEmailAddressRequest><request><email>some@domain.com</email></request></a:validateEmailAddressRequest></soapenv:Body>', reason: all key-values did not match, expected has un-matched keys: [a:validateEmailAddressRequest]

1 个答案:

答案 0 :(得分:0)

欢迎您为此提供修复。同时,您可以执行此操作。请注意,您无需转换为xml,即使使用三引号多行形式,def xml1也足够。您可能会对text感到困惑。

* xmlstring xml2 = xml2
* xml xml2 = xml2.replaceAll('(</?)a:', '$1b:').replace('xmlns:a', 'xmlns:b')
* match xml1 == xml2
相关问题