【问题标题】:Mocking Web Service Response | Bundle couple of them in a web app模拟 Web 服务响应 |将其中的几个捆绑在一个网络应用程序中
【发布时间】:2009-12-14 03:52:12
【问题描述】:

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

【问题讨论】:

    标签: web-services soap mocking soapui


    【解决方案1】:

    如果您稍微拆分一下内部架构,您的生活会更轻松。与其不灵活地让客户端代码依赖于外部 SOAP 服务,不如定义一个供内部使用的接口。您可以调用此 IServiceProxy 或类似的名称。

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        【解决方案3】:

        我之前也遇到过类似的问题

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

        将所有不同的响应存储在服务器的不同 XML 文件中

        在 Web 服务代码中,我们只是在 Web 服务请求中放置具有唯一标识符的 switch,在 switch 块中,我们发送来自存储在服务器中与唯一标识符相对应的特定 XML 文件的响应

        这是可能的,因为响应大多是静态的,并且会根据请求中的单个唯一标识符而有所不同

        构建和部署它几乎不需要一天的时间,因为我们有方便的响应

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-06-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多