Я пишу тест Спока, в котором у меня есть веб-сервис REST, который возвращает XML, подобный этому:
<templates>
<userTemplate id="1109">
<settingsXml/>
<type>USER</type>
<label>template111</label>
<description>template111</description>
</userTemplate>
<userTemplate id="1141" isAutomaticTemplate="true">
<settingsXml/>
<type>USER</type>
<label>An updated user template</label>
</userTemplate>
</templates>
Мой тест хочет убедиться, что конкретный шаблон пользователя в этом документе не . Итак, используя REST-клиент HTTP Builder и XMLSlurper, я делаю следующее:
res = settingsService.get(path: "templates")
res.status == 200
def delTemplate = res.data.userTemplate.find {
println it.@id == newUserTemplateId
it.@id == newUserTemplateId
}
delTemplate
Я бы подумал, что delTemplate будет нулевым после вызова find (потому что нет шаблона с таким идентификатором; выражение будет печатать его. * false , в этом случае значение newUserTemplateId равно 1171).
Однако delTemplate относится к типу groovy.util.slurpersupport.NoChildren и, по-видимому, содержит элемент userTemplate.
Забавно, если я напишу быстрый скрипт с тем же XML-кодом, что и текст (в отличие от чтения его из REST), res.userTemplate.find { it.@id == 1171 }
вернет ноль, как и ожидалось.
Что я делаю не так или как я могу это решить?