假设我有一个包含以下代码片段的 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
元素。
关于java - Wiremock 和 XPath 属性测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58382631/