2016-08-28 4 views
1

Я пытаюсь написать модульные тесты для веб-службы WSAP SOAP на Java.Пространства имен в службах SOAP

Проблема возникает, когда я пытаюсь утверждать равенство XML, как выглядит ответ от веб-службы и как он выглядит на самом деле.

Я понятия не имею, почему я получаю следующее сообщение об ошибке:

Expected namespace prefix "pns111", but was "ns3" 

Так вот, pns111 мое определено пространство имен для веб-службы. Почему я получаю пространство имен ns3? И почему конкретно ns3? Я не определил пространство имен ns3 в любом месте, это пространство имен как-то особенное?

Кроме того, я получаю другую ошибку относительно XML равенства утверждение:

Expected presence of child nodes to be 'true', but was 'false'. 

Можете ли вы дать мне ключ от этой ошибки, а?

ответ

0

В XML префикс, используемый для пространства имен, не обязательно должен быть одинаковым для двух документов XML, которые считаются равными. Это помогает считать префикс пространства имен не более чем аббревиатурой для URI пространства имен.

Эти два XML-документов являются одинаковыми от обработки XML-позиции:

<?xml version="1.0" encoding="UTF-8"?> 
<foo:root xmlns:foo="http://example.com"> 
    <foo:node>Hi!</foo:node> 
</foo:root> 

А:

<?xml version="1.0" encoding="UTF-8"?> 
<bar:root xmlns:bar="http://example.com"> 
    <bar:node>Hi!</bar:node> 
</bar:root> 

В первом примере foo означает «http://example.com пространство имен». Во втором bar тоже указывает на одно и то же пространство имен.

Итак, в вашем тесте вы должны убедиться, что пространство имен URI соответствует ожидаемому. Какой префикс используется, не имеет значения, если он согласован в документе XML.

Это зависит от библиотеки, генерирующей ваш XML, если он будет использовать префикс, который вы указали, или выбрать один из них.

Смежные вопросы