2

网络服务返回

<SOAP: Envelope>
<SOAP: Header>
    <SOAP: Body>
        <RootElement>
        <![CDATA[Base64 encoded string]]>
        </RootElement>
    </SOAP : Body>
</SOAP: Header>

Base64 编码的字符串实际上是一个 EXI 编码的 XML。我知道如何解码 base 64,然后将 EXI 转换为 XML。让我们称之为 MyEXIEn​​coder.class(Java 类)

但是,我们目前有很多基于 XML 响应的 SOAP UI 测试用例。

目前唯一的方法似乎是添加一个可以调用我的 java 类类的 groovy 脚本,但这是一个额外的测试步骤,这意味着我必须编写一些脚本来更新我的 SOAP UI 测试用例。此外,我不确定我的断言将如何工作以及我的测试用例会有多少变化(我有数百个测试用例)

我需要一个方法

从我的测试步骤中截取 SOAP 响应,使用我的自定义类进行解码并将响应返回 SOAP UI,以便现有的断言可以工作。

任何帮助将不胜感激!

提前致谢。

4

1 回答 1

1

添加一个监视器监听器,如下所示

例如

Event Handler:
//MonitorListener.afterProxy

// get the raw response as a string
def str = new String( messageExchange.getResponseContent()  )

// Decode
 </ConversionRateResult", "Result>1.0</ConversionRateResult");

// save the response back
messageExchange.rawResponseBody = str 

编辑:根据 OP 的评论,更新链接以使用上下文。

根据SOAPUI 第 6 点的提示和技巧。使用RequestFilter.afterRequest一个可以设置响应。

// write it back 
context.httpResponse.responseContent = content

MonitorListener.afterProxy不给出上下文对象。

RequestFilter.afterRequest+ usingcontext原来是更好的解决方案。

于 2017-10-06T16:22:10.087 回答