【问题标题】:Wiremock and XPath attribute testingWiremock 和 XPath 属性测试
【发布时间】:2019-10-14 18:59:56
【问题描述】:

假设我有一个包含以下 sn-p 的 XML 请求

<foo bar="12356"/>

我的服务将这个 sn-p 发送给另一个服务来做事。该服务需要一个具有bar 属性且没有文本节点的foo 节点。以下表达式与该节点匹配得很好

//foo[@bar='12356']

问题在于 Wiremock 期望文本节点出现在匹配的 foo 节点中,因此,它认为前面的表达式不匹配。

如何使用wiremock 测试XML 以匹配属性而不是文本节点?

【问题讨论】:

    标签: java xml xpath wiremock


    【解决方案1】:

    根据 XPath 规范,命名空间很重要。如果xml文件如下

    <?xml ...>
    <Envelope>
        <foo bar="12356"/>
    </Envelope>
    

    那么提供的 XPath 表达式就会起作用。但是一旦你添加了xmlns= 声明,你的节点就不再是foo 而是"[xmlns]":foo。因此,//foo 只匹配无前缀的 foo 元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 2020-02-15
      相关资源
      最近更新 更多