Как вернуть динамический ответ в SoapUI MockService - PullRequest
6 голосов
/ 27 мая 2010

Я новичок в SoapUI и только что настроил очень простой MockService.Можно ли манипулировать ответом таким образом, чтобы для конкретного запроса элементы ответа создавались динамически?

Сценарий 1:

Запрос:

<record>
  <identifier>ID1</identifier>
</record>

Ответ:

<response>
  <child1>child 1</child1>
</response>

Сценарий 2:

Запрос:

<record>
  <identifier>ID2</identifier>
</record>

Ответ:

<response>
  <child2>child 2</child2>
</response>

Это для простого теста, и мне не нужно делать это больше, чем указано выше.В настоящее время я делаю следующее, чтобы получить желаемые результаты, но, поскольку я совершенно новичок в этом, я уверен, что есть лучшие альтернативы:

Ответ:

<response>
  ${dynElement}
</response>

Groovy скрипт:

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(mockRequest.requestContent)
def reqRef = String.valueOf(holder.getNodeValue("//identifier"))

def child1Text = "<child1>child 1</child1>"
def child2Text = "<child2>child 2</child2>"

if (reqRef == "ID1") {
  context.setProperty("dynElement", child1Text)
} else if (reqRef == "ID2") {
  context.setProperty("dynElement", child2Text)
}

Ответы [ 2 ]

3 голосов
/ 23 ноября 2010

Вместо xpath вы также можете использовать XmlSlurper.

def req = new XmlSlurper().parseText(mockRequest.requestContent)
def reqRef = req.record.identifier

Бесстыдно оторвано от ответов на этот вопрос , пожалуйста, не делайте мне больно.

2 голосов
/ 03 июня 2010

Я делаю это с помощью «готовых ответов» и запросов xpath. Для этого в mockservice вы настроите серию обработчиков отправки, чтобы сопоставить запросы с ответами. Предположим, у вас есть запрос1, запрос2, ответ1, ответ2. Используйте метод отправки «Query Match», чтобы сопоставить выражение XPATH. В этом матче верните желаемый ответ. т.е. если вы найдете ID1 в xpath, верните готовый Response1.

Кроме того, PRO-версия отлично работает с XPATH, поэтому вам не нужно кодировать ее вручную. то есть он может посмотреть ответный щелчок на объекте, который вы хотите запустить (в вашем случае, ID1), и он создаст для вас выражение XPATH. Я запросил лицензию PRO, только на основании этого. В настоящее время ожидаем бюджетирования ...

ИМО, гораздо проще начать, чем разбираться в отличных словах.

Chris

...