当前位置: 首页 > 面试题库 >

在Java中将WireMock与SOAP Web服务一起使用

徐帅
2023-03-14
问题内容

我对WireMock完全陌生。

到目前为止,我一直在使用通过SOAPUI进行模拟响应。我的用例很简单:

只需将SOAP XML请求发送到不同的端点(http:// localhost:9001 /
endpoint1
),然后返回固定的XML响应。但是MockWrire必须作为独立服务部署到专用服务器上,该服务器将充当从中提供模拟响应的中心位置。

只是想要一些开始的建议。如我所见,WireMock更适合REST Web服务。所以我的疑问是:

1)我是否需要将其部署到Java Web服务器或容器以充当始终运行的独立服务。我读到你可以通过使用

java -jar mockwire.jar --port [port_number]

2)我需要使用MockWire API吗?我需要为用例创建类吗?就我而言,请求将通过JUnit测试用例触发以进行模拟。

3)如何实现简单的URL模式匹配?如上所述,我只需要简单的模拟即可,即在对http:// localhost:9001 /
endpoint1
进行请求时获得响应

4)我的用例是否有更好/更容易的框架?我读过有关Mockable的文章,但它对3个团队成员和免费试用版域有限制。


问题答案:

我是WireMock的创造者。

我最近使用WireMock在客户端项目上模拟了SOAP接口的集合,因此我可以证明这是可能的。至于它比SOAP
UI更好还是更坏,我想说它有一定的优势,但需要权衡取舍。主要优点是相对易于部署和编程访问/配置,并支持HTTPS和低级故障注入之类的功能。但是,您需要做更多的工作来解析和生成SOAP负载-
它不会像SOAP UI一样从WSDL中生成代码/存根。

我的经验是,诸如SOAP UI之类的工具可以使您入门更快,但是从长远来看,当您的测试套件变得微不足道时,往往会导致更高的维护成本。

依次解决您的问题:1)如果要让模拟在服务器上的某个地方运行,执行此操作的最简单方法是运行如上所述的独立JAR。我建议不要尝试将其部署到容器中-
此选项仅在没有其他选择时才存在。

但是,如果您只想运行集成测试或完全独立的功能测试,建议您使用JUnit规则。我要说的是,如果a)您正在将其他已部署的系统插入其中,或者b)您是通过非JVM语言使用它,那么在专用的过程中运行它只是一个好主意。

2)您需要使用以下三种方式之一进行配置:1)Java API,2)HTTP上的JSON或3)JSON文件。3)可能与您使用SOAP UI所使用的最接近。

3)有关使用JSON和Java的大量存根示例,请参见http://wiremock.org/stubbing.html。由于SOAP倾向于绑定到固定端点URL,因此您可能需要urlEqualTo(...)。当我过去对SOAP进行存根时,我倾向于对整个请求正文进行XML匹配(请参阅http://wiremock.org/stubbing.html#xml-
body-matching)。我建议投资编写一些Java构建器以发出所需的请求和响应主体XML。

4)Mock Server和Betamax都是WireMock的成熟替代品,但AFAIK不再提供更明确的SOAP支持。



 类似资料:
  • 我是个很新的程序员。我在工作中的任务之一是让我们的定制工具创建草稿电子邮件,并将其放入运行该工具的用户的草稿电子邮件文件夹中。我们目前使用Exchange Server 2010(但正在迁移到Exchange Online)。 这个链接讨论了UseDefaultCredentials,但我似乎不知道如何实现它。我创建了一个名为service的ExchangeService对象,并使用以下凭据与Ex

  • 问题内容: 我有一台使用HTTPS且使用Firefox的Grizzly制造的REST服务器。这是代码: 现在,我尝试用Java达到它: 得到: 从我在网上找到的示例来看,似乎需要设置一个Truststore,然后再设置某种TrustManager。对于我这个简单的小项目,这似乎需要大量代码和设置工作。有没有更简单的方法可以说..我信任此证书并指向.cert文件? 问题答案: 当您说“是否有一种更简

  • 我想通过STS在Spring Boot中使用JPA和SQL Server。这是我的表: 马文 application.properties 模型.Account.class 接口账户 ServiceAccount.class 服务帐户类 我在控制器中调用了方法add帐户(),这是我得到的异常 "java.lang.NoClassDefFoundError: org/spingFramework/o

  • 我目前正在为我的工作研究Windows服务总线,并且已经设法非常快速地使用NetMessaging作为传输类型启动了一个测试系统。但是,今天我尝试切换到AMQP作为传输机制,但我似乎无法让它工作-它成功地根据我的连接字符串创建了一个MessagingFactory,但当我尝试创建队列时失败了,给我错误: 令牌提供者在访问“https://{local机器名}: 5671/TestServiceBu

  • 我在Azure的应用服务中使用了OpenCV,但是在安装扩展(pip安装opencv-python)时发生了错误。 似乎我可以在appservice上使用SSH登录,所以在安装模块后,使用SSH登录,然后我键入如下命令。 然后,我键入如下命令。 通过键入上述命令,我可以在Python中使用OpenCV。 我以为它会在写入requirements.txt和部署时自动安装pip,但部署或重启后操作系统

  • 我有一个名为UserRepository的通用存储库接口。然后我有一个接口,它从MyUserRepository扩展而来。它处理一个MyUser类,该类扩展了User。 我还有一个名为UserService的服务接口和一个名为MyUserServiceImpl的类。 该服务需要UserRepository的实例,我虽然可以使用某种注释,如@Qualifer,但它不起作用。 应用程序无法启动 说明: