Wiremock 和 XPath 属性测试



>假设我有一个包含以下代码片段的 XML 请求

<foo bar="12356"/>

我的服务将此代码段发送到另一个服务来执行操作。该服务需要一个具有bar属性且没有文本节点的foo节点。以下表达式与该节点匹配得很好

//foo[@bar='12356']

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

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

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

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

然后,有问题的 XPath 表达式将起作用。但是一旦你添加了xmlns=声明,你的节点就不再是foo而是"[xmlns]":foo。因此,//foo仅匹配不带前缀的foo元素。

最新更新