首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SoapUI模拟异步服务

SoapUI模拟异步服务
EN

Stack Overflow用户
提问于 2011-10-26 10:56:38
回答 1查看 6.8K关注 0票数 4

在我们访问真正的web服务之前,我们使用SoapUI来模拟web服务来测试我们的应用程序(APP)。

创建一个将返回预定义响应的同步模拟服务非常简单。但是,我不得不在应用程序发送请求的地方模拟一些异步服务,SoapUI立即响应确认(例如成功),然后在预定义的间隔后,SoapUI将调用我们的应用程序(然后应用程序充当服务器)。我成功地使用了测试用例,其中第一步是MockResponse,然后是延迟,然后是MockRequest (调用我们的应用程序)。

上面的方法很好,但我想通过在Mock Reponse中直接编写脚本来实现,以避免使用测试用例。我成功地编写了脚本,当模拟服务接收到请求时,它将触发回调。

代码语言:javascript
复制
def project = result.mockOperation.mockService.project
// The API documentation doesn't say what finish is supposed to do but I try (doesn't help)
result.finish()
// Request that will be returned back - THE CALLBACK
def request = project.interfaces["LocationServicesOperation"].operations["ackLocation"].getRequestByName("Request 1")
sleep(4000)
request.submit(new com.eviware.soapui.impl.wsdl.WsdlSubmitContext(  ), false)

上面的问题是,在发送初始请求的响应之前,它将触发回调。我试过在SoapUI PRO中使用事件处理,但我无法做到这一点。在Wireshark,我可以看到这样的交流:

代码语言:javascript
复制
1) APP request -> SoapUI 
2) SoapUI callback -> APP
3) APP confirms 2) -> SoapUI 
4) SoapUI confirms 1) -> APP

然而,它必须是:

代码语言:javascript
复制
1) APP request -> SoapUI 
2) SoapUI confirms 1) -> APP
3) SoapUI callback -> APP
4) APP confirms 2) -> SoapUI 

上面的代码实际上来自SoapUI Pro中的SoapUI事件。result.finish()做不到这一点。

谢谢你的建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-27 14:58:46

我终于在http://www.eviware.com/forum/viewtopic.php?f=5&t=3542&p=12474&hilit=asynchronous#p12474找到了一个解决方案

诀窍不是直接从响应脚本中分配请求,而是将回调请求添加到测试中,然后调用测试。这将导致模拟运行程序首先发送对请求的响应,然后运行测试用例。

其优点是测试用例是动态触发的,不需要一直运行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7901685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档