Pergunta

Minha pergunta é sobre colocar elementos de dados (do script Groovy) na resposta no SOAPUI. Eu tenho uma variedade de dados que gostaria de colocar na minha resposta (em diferentes tags/elementos)


Estou ciente de colocar um elemento simples como este:

O elemento "O meu nome"Na resposta XML:

<ns:MyName>${MyName}</ns:MyName>

É mapeado do roteiro Groovy por

context.setProperty("MyName" , "My name" )

Agora o problema:

Minha resposta XML se parece com a seguinte:

   <soapenv:Body>
  <ns:GetDataSummaryResponse>
     <!--Optional:-->
     <ns:GetDataSummaryResult>
        <ns:DataSummary>
           <!--Zero or more repetitions:-->
           <ns:DataSummaryResponseDetail>
              <ns:Name>?</ns:Name>
              <!--Optional:-->
              <ns:DataProgress>
                 <!--Optional:-->
                 <From>?</From>
                 <!--Optional:-->
                 <Procent>?</Procent>
                 <!--Optional:-->
                 <To>?</To>
                 <!--Optional:-->

No Groovy, criei a matriz de dados que é preenchida com dados, por exemplo, como este:

context:[DataSummary:[DataSummaryResponseDetail:[Name:My  name, DataProgress:[From:some text, **Procent:some value**, To:some text]]]

Na resposta, sou capaz de ver todo o valor de ${DataSummary} Mas como faço para obter o elemento "Proced"

Talvez eu esteja errado sobre como construir meus dados de contexto, mas fique à vontade para ajustar!

Foi útil?

Solução

Consegui fazer isso com muita pesquisa. Primeiro de tudo, eu precisava usar "=" na frente do elemento para poder obter um identificador como $ {= DataSummary [0]} Isso funciona no nível superior dos meus dados mostrados antes.

Mas para realmente resolver o problema, criei uma aula em Groovy assim:

Código: Selecione todas as classes DataSummaryRescedEtail {public String Name public DataProgress DataProgress = new DataProgress () public value [] valor = novo valor [2]} classe Dataprogress {Data pública da data pública para Float Public Procent} Classe Valor {public String Public Public Public Public Public Public Public Public} Int Monta}

def hsrd = new DataSummaryResponseDetail()
hsrd.name = 'Some name'
hsrd.value[0]=new Value()
hsrd.value[0].Amount = 1000
hsrd.value[0].Currency = 'SEK'
hsrd.totalValue.Amount = 2000
hsrd.totalValue.Currency = 'USD' 

e então na resposta XML. Refiro -me a elementos como este $ {hsrd.value [0] .amount} $ {= hsrd.totalvalue.amount}

def hsrd = new DataSummaryResponsedEtail () hsrd.name = 'algum nome' hsrd.value [0] = new Value () hsrd.value [0] .Amount = 1000 hsrd.Value [0] .Currency = 'Sek' Hsrd. totalValue.amount = 2000 hsrd.totalvalue.currency = 'USD'

Problema resolvido. Se você souber de uma maneira melhor, por favor me avise.

Outras dicas

Eu não trabalho com Soapui, mas você já tentou o seguinte:

${DataSummary.DataSummaryResponseDetail.DataProgress.Procent}

Se o DataSummary for uma matriz, você pode acessar a primeira entrada usando

${DataSummary[0].DataSummaryResponseDetail.DataProgress.Procent}

Você pode iterar sobre a matriz usando o método cada (), então

${DataSummary.each { it.DataSummaryResponseDetail.DataProgress.Procent }}

conseguiria todas as entradas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top