SoapUI Mock. Как выбрать ответ, опираясь на значение тега в запросе

У меня SOAP запрос выглядит так:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:gd="http://test.com/gds-mvmnt">
    <env:Header/>
    <env:Body>
        <ns1:getContainer env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
            <code xsi:type="xsd:string">PCK26397841</code>
            <messageId xsi:type="xsd:string"/>
        </ns1:getContainer>
    </env:Body>
    </env:Envelope>

Мне нужно создать макет, который выбирает ответ на основе значения тега кода. Нет необходимости изменять ответы. Ответы добавлены в макет как есть. Просто нужна логика, подобная этой: если код A, то ответ 1, если код B, то ответ 2 и так далее. Пожалуйста, помогите мне с базовым скриптом.

1 ответ

Это возможно, написав простой Script Dispatch,

Вот подход:

  • Проверьте, не является ли запрос пустым
  • Определите карту, которая состоит из кода и соответствующего имени ответа
  • Извлеките код из макета запроса и отправьте соответствующий ответ на основе приведенной выше карты.
  • Надеюсь, вы знаете, чтобы определить несколько ответов и метод отправки сценариев

Вот сценарий:

//Define desired code and response name
def responseMap = [A: 'Response1', B: 'Response2']

//Check if the request is not empty
assert mockRequest.requestContent, 'Request is empty'

//Extract the code
def code = new XmlSlurper().parseText(mockRequest.requestContent).'**'.find{it.name() == 'code'}?.text()

//Return the respective response
return responseMap[code]
Другие вопросы по тегам