SoapUI模拟。如何在请求中选择依赖于标记值的响应

时间:2017-07-14 15:17:01

标签: groovy mocking soapui groovyscriptengine

我有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,依此类推。 请帮我解决基本的groovy脚本。

1 个答案:

答案 0 :(得分:0)

通过编写简单的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]