模拟Web服务响应|在Web应用程序中捆绑他们几个

时间:2009-12-14 03:52:12

标签: web-services soap mocking soapui

我在一个企业项目中工作,我的团队负责创建应用程序的前端,还有另一个开发Web服务的团队,并为将作为该项目的一部分提供的所有服务提供WSDL。在开发阶段,我们的本地开发环境将指向负责创建Web服务的团队的开发框之一。它们的开发环境很可能在迭代中间不稳定。为了降低这种风险,我们在本地计算机上使用SOAP UI并启动模拟服务并进行开发。每当我们需要不同类型的响应时,我们都会修改本地服务响应XML。这个过程运行良好,但我想知道是否有一种方法,每个服务说我创建10个响应并将其作为战争部署在其中一台机器上的tomcat上,我的整个开发团队指向那个暴露相同的战争服务并基于参数,它可以从战争中捆绑的10个响应中发送一个响应。我不想在此上花费任何精力。是否有一种工具可以提供开箱即用的这种功能。

3 个答案:

答案 0 :(得分:2)

如果你将内部架构分开一点,它会让你的生活更轻松。不要过度地让客户端代码依赖外部SOAP服务,而是定义一个供内部使用的接口是有益的。您可以调用此IServiceProxy或其他名称。

让客户端代码与该接口通信,并使用依赖注入(DI)将其实例注入客户端。这意味着对于大量的开发用途,您可以简单地用Test Double(例如Mock)替换此接口。

如果必须也有一个SOAP服务来验证您的SOAP堆栈是否按预期工作,请注意所谓的共享夹具测试气味。单个服务器上的共享“测试”服务将是一个共享夹具,它可能会给你带来更多的麻烦,因为开发人员会互相踩踏,这将是一个瓶颈。

更好的选择是在每个开发人员的计算机上设置SOAP服务,或者,如果不可能,则为每个开发人员设置专用服务。

您可以在优秀的xUnit Test Patterns中阅读有关共享灯具和许多其他测试模式和反模式的更多信息。

答案 1 :(得分:2)

我遇到了测试团队想要测试不同场景的情况,这需要不时修改模拟服务。由于大多数测试团队都是非技术人员,因此我总是不愿意更新soapUI模拟套装。为了避免这种情况,我创建了一个完全基于Web的应用程序来使用WSDL模拟服务。由于完全基于Web的测试人员能够从他们的Web浏览器更改模拟服务。

该应用程序是在soapUI框架之上编写的。它提供了诸如自动生成虚拟响应SOAP消息和验证等功能。该实用程序还允许延迟模拟服务,这有助于性能测试。

我现在已将应用程序添加到SourceForge。请在以下链接中找到

http://sourceforge.net/projects/easymocker/

(Web Service Mocker是一个易于使用,完全基于Web的SOAP Web服务模拟实用程序。在单元测试,组件集成测试和非功能需求测试期间,该实用程序在SOA开发环境中非常有用。)

答案 2 :(得分:0)

我之前遇到过类似的问题

我们使用需要模拟服务的WSDL创建了一个模拟主机Web服务应用程序

在服务器

中的不同XML文件中存储所有不同的响应

在Web服务代码中,我们只将具有唯一标识符的交换机放入Web服务请求和内部交换机块中,我们从存储在服务器中的特定XML文件发送响应,该文件对应于唯一标识符

这是可能的,因为响应主要是静态的,并且会根据请求中的单个唯一标识符而变化

由于我们有方便的回复

,因此构建和部署它几乎不需要一天

希望这可以根据您的应用程序的上下文帮助您