Тестирование атрибутов Wiremock и XPath - PullRequest
0 голосов
/ 14 октября 2019

Предположим, у меня есть запрос XML, содержащий следующий фрагмент

<foo bar="12356"/>

Мой сервис отправляет этот фрагмент другим сервисам для выполнения каких-либо действий. Эта служба ожидает узел foo с атрибутом bar и без текстового узла. Следующее выражение точно соответствует этому узлу

//foo[@bar='12356']

Проблема заключается в том, что Wiremock ожидает присутствия текстового узла в совпадающих foo узлах, в результате чего предыдущее выражение НЕ совпадает.

Используя wiremock, как вы проверяете XML на соответствие атрибутов вместо текстовых узлов?

1 Ответ

0 голосов
/ 16 октября 2019

Согласно спецификации XPath, пространства имен имеют значение. Если xml-файл имеет следующий вид

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

, то приведенное выражение XPath будет работать. Но как только вы добавите объявление xmlns=, ваш узел больше не будет foo, а скорее "[xmlns]":foo. В результате //foo соответствует только элементам с префиксом foo.

...