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]