>假设我有一个包含以下代码片段的 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
元素。