假设我有一个包含以下代码段的XML请求
<foo bar="12356"/>
我的服务将此代码段发送给另一个服务来执行操作。该服务需要具有foo
属性且没有文本节点的bar
节点。以下表达式恰好匹配该节点]
//foo[@bar='12356']
问题是Wiremock期望文本节点出现在匹配的foo
节点中,因此,它认为先前的表达式不匹配。
使用wiremock如何测试XML以匹配属性而不是文本节点?
根据XPath规范,名称空间很重要。如果xml文件如下
<?xml ...>
<Envelope>
<foo bar="12356"/>
</Envelope>
然后,所提供的XPath表达式将起作用。但是,一旦添加了xmlns=
声明,您的节点就不再是foo
,而是"[xmlns]":foo
。结果,//foo
仅匹配未前缀的foo
元素。