我是 WireMock 的新手。
到目前为止,我一直在使用 SOAPUI 模拟响应。我的用例很简单:
只需将 SOAP XML 请求发送到不同的端点 ( http://localhost:9001/endpoint1 ) 并返回固定的 XML 响应。但是 MockWrire 必须作为独立服务部署到专用服务器上,该服务器将充当提供模拟响应的中心位置。
只是想要一些开始的建议。如我所见,WireMock 更适合 REST Web 服务。所以我的疑惑是:
- 我是否需要将它部署到 java web 服务器或容器以充当始终运行的独立服务。我读到你可以通过使用
java -jar mockwire.jar --port [port_number]
- 我需要使用 MockWire API 吗?我需要为我的用例创建类吗?在我的例子中,请求将通过 JUnit 测试用例触发以进行模拟。
3)如何实现简单的URL模式匹配?如上所述,我只需要简单的模拟,即在向 http://localhost:9001/endpoint1 发出请求时得到响应
- 我的用例是否有更好/更简单的框架?我阅读了有关 Mockable 的信息,但它对 3 名团队成员和免费层中的演示域有限制。
原文由 Anurag 发布,翻译遵循 CC BY-SA 4.0 许可协议
我是 WireMock 的创建者。
我最近使用 WireMock 在一个客户端项目上模拟了一组 SOAP 接口,所以我可以证明这是可能的。至于它比 SOAP UI 好还是坏,我想说有一些明确的优点,但也有一些折衷。一个主要的好处是部署和编程访问/配置相对容易,并且支持 HTTPS 和低级故障注入等。但是,您需要做更多的工作来解析和生成 SOAP 有效负载——它不会像 SOAP UI 那样从 WSDL 生成代码/存根。
我的经验是,像 SOAP UI 这样的工具可以让您更快地起步,但从长远来看,当您的测试套件变得过于琐碎时,往往会导致更高的维护成本。
依次解决您的观点:1)如果您希望您的模拟在某处的服务器上运行,最简单的方法是按照您所描述的那样运行独立的 JAR。我建议不要尝试将它部署到容器中——这个选项实际上只存在于别无选择的情况下。
但是,如果您只想运行集成测试或完全独立的功能测试,我建议使用 JUnit 规则。我会说在专用进程中运行它只是一个好主意,如果 a) 您正在将其他已部署的系统插入其中,或者 b) 您正在通过非 JVM 语言使用它。
您需要通过以下 3 种方式之一对其进行配置:1) Java API,2) JSON over HTTP,或 3) JSON 文件。 3) 可能最接近您习惯使用的 SOAP UI。
请参阅 http://wiremock.org/stubbing.html 以获取大量同时使用 JSON 和 Java 的存根示例。由于 SOAP 倾向于绑定到固定端点 URL,您可能需要
urlEqualTo(...)
。当我过去对 SOAP 进行存根时,我倾向于对整个请求主体进行 XML 匹配(请参阅 http://wiremock.org/stubbing.html#xml-body-matching )。我建议投资编写一些 Java 构建器来发出您需要的请求和响应主体 XML。Mock Server 和 Betamax 都是 WireMock 的成熟替代品,但据我所知,它们不提供任何更明确的 SOAP 支持。