SoapUI - динамический MockResponse, возвращающий значения на основе запроса - PullRequest
0 голосов
/ 18 января 2019

В целях тестирования мне нужно иметь ложный ответ в SoapUI, который возвращает динамические значения на основе запроса.А именно, я посылаю идентификатор объекта, с которым мне нужно работать позже, в моей программе.

Когда у меня есть такой скрипт, как этот:

def holder = new com.eviware.soapui.support.XmlHolder( mockRequest.requestContent )
requestContext.exportId = holder.getNodeValue("//Uwid_exp")

И часть ложного ответа вродеэто:

<Uwid_exp>${exportId}</Uwid_exp>

Тогда это работает, когда я вызываю мой фиктивный сервис через SoapUI.

Однако, когда я вызываю сервис дистанционно из моего приложения, что мне нужно для тестирования,затем фиктивная служба возвращает нулевое значение.

Согласно MessageLog, входящий запрос выглядит так:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <AKCEPTACE_PROTOKOL xmlns="https://ws.nrhzs.uzis.cz/NRHZS_WebService" xmlns:ns2="https://ws.nrhzs.uzis.cz/NRHZS_WebService/NRHZS_WebService.BussinesLayer.DTO" xmlns:ns3="http://schemas.microsoft.com/2003/10/Serialization/">
      <Ico>47114304</Ico>
      <Cpo>211</Cpo>
      <Uwid_exp>000119</Uwid_exp>
      <PDF_Potvrzeni>A</PDF_Potvrzeni>
    </AKCEPTACE_PROTOKOL>
  </soap:Body>
</soap:Envelope>

Но в исходящей части есть:

<Uwid_exp></Uwid_exp>

Я подозреваю, что mockRequest.requestContent не указывает на запрос в этом случае, поэтому скрипт пытается присвоить значение переменной ${exportId}, но ее нет.Но до сих пор я не смог уточнить, что вместо этого поместить в XMLHolder определение объекта.

Где я могу найти содержимое фактического входящего запроса?

1 Ответ

0 голосов
/ 18 января 2019

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

def holder = new com.eviware.soapui.support.XmlHolder( mockRequest.requestContent )
holder.namespaces['nrh'] = 'https://ws.nrhzs.uzis.cz/NRHZS_WebService'
requestContext.exportId = holder.getNodeValue("//nrh:Uwid_exp")
requestContext.CPO = holder.getNodeValue("//nrh:Cpo")
requestContext.ICO = holder.getNodeValue("//nrh:Ico")
...