当前位置: 首页 > 知识库问答 >
问题:

合约测试-具有外部SOAP/REST下游服务的Spring Boot微服务

丁和歌
2023-03-14

我们有一组相互通信的微服务和一些外部下游服务。Spring Cloud合同用于集成测试以检查服务接口。我能够测试微服务之间通信的合同。

我想知道如何为生产商写合同测试

  • 不提供任何合同(无法访问源代码)
  • 基于SOAP

我可以强制消费者自己签订合同吗?

找不到SCC文档在这方面有帮助。任何有帮助的指示都是非常感谢的。谢谢!

共有1个答案

长孙阳嘉
2023-03-14

如果它是基于SOAP的,那么它就是基于XML的标准通信。您可以生成基于XML的契约(这里的一个示例是https://docs . spring . io/spring-cloud-contract/docs/current-SNAPSHOT/reference/html single/# contract-DSL-XML)。至于那种你无法接触到源代码的情况,你可以这样做:

  • 您可以创建一个测试,该测试将通过代理(例如WireMock代理)到达真实的应用程序,这样您将以存根的形式存储该通信(https://www.youtube.com/watch?v=ZyHG-VOzPZg),您也可以检查代码(https://github.com/spring-cloud-samples/the-legacy-app/tree/master/stubs_with_proxy). 这里的问题是生产者可能不是幂等的,或者可能需要对输入进行大量具体设置以获得正确的响应(例如,精确定义的日期)。
  • 你可以在消费者方面创建合同,告诉stubrunner他们在哪里(https://docs.spring.io/spring-cloud-contract/docs/current-SNAPSHOT/reference/htmlsingle/#features-stub runner stubs协议),并启用generateStubs功能(https://docs.spring.io/spring-cloud-contract/docs/current-SNAPSHOT/reference/htmlsingle/#features-存根运行器在运行时生成存根),代码示例(https://github.com/spring-cloud-samples/spring-cloud-contract-samples/blob/master/consumer_with_latest_2_2_features/src/test/java/com/example/GenerateStubsTest.java). 这里的问题是,作为一个消费者,你可以写任何你想要的东西,但这可能与现实无关。另一方面,你已经有了可以上传给制片人的合同,要求他们有朝一日实现自己的部分

由你来决定你更喜欢哪一个,记住每个解决方案都可能有它的问题。

至于Pact,Pact遵循第二种方法,因为是消费者定义了交互应该是什么样子。这同样可能与现实无关。

 类似资料:
  • 此功能的状态是实验性的。我们欢迎您对此功能的实用性的反馈。我们可能会在未来发展这个功能,使其更加通用。虽然我们将努力确保向后兼容性,但不能保证。 场景 在某些情况下,希望能够从交易处理函数中调用REST API。这使你可以将区块链中的复杂计算移出。调用REST API允许交易处理器功能将复杂或昂贵的计算外包给中央或peer托管的服务。 调用外部REST服务 post(url,data)函数可用于交

  • 问题内容: 我的组织正在努力在JBoss应用服务器上构建RESTful Web服务。迄今为止,QA团队已使用SoapUI来测试SOAP Web服务。SoapUI具有具有REST功能的新版本。我们正在考虑使用它。 网上是否有任何可以免费测试的可公开获得的RESTful服务? 有哪些工具可用于测试RESTful Web服务? 问题答案: soapUI也可以完成这项工作,请查看此博客文章以开始使用。

  • 问题内容: 我用GET,POST,UPDATE和DELETE四种方法创建了Rest服务。这些方法建立了到数据库的连接以检索和存储数据。 现在,我想测试每种方法。我为此使用了Jersey测试框架。只要删除代码,真正对数据库进行调用的代码就可以正常工作。当我留下进行数据库调用的代码时,它引发了一个异常,即它无法连接到数据库。 编辑:我做了一些研究,并使用了依赖注入。数据库调用移到一个单独的类,但是我仍

  • 我目前正在开发一个云备份解决方案,其中涉及到多达8个在spring-boot中开发的微服务,并使用mongo DB atlas作为持久层。 微服务包括Netflix ZUUL API网关和Netflix Eureka作为服务发现机制。微服务被要求彼此进行明显的对话。 对微服务进行了对接。到目前为止,我已经使用docker-compose文件将它们部署到EC2实例中,该文件列出了使用docker网络

  • 假设我们有一个用户、Wallet REST微服务和一个将事情粘合在一起的API网关。当Bob在我们的网站注册时,我们的API网关需要通过用户微服务创建一个用户,通过钱包微服务创建一个钱包。 下面是一些可能出错的场景: > 用户Bob创建失败:没关系,我们只需向Bob返回一个错误消息。我们使用的是SQL事务,所以没有人在系统中看到Bob。一切都很好:) 创建了用户Bob,但在创建钱包之前,我们的AP

  • 假设应用程序依赖于外部服务器上的REST服务,http://otherserver.com.为了测试,我想在JUnit环境中模拟外部rest调用(通过Wiremck)。启动单独的服务器会消耗时间,而且不容易。使用Wiremck规则看起来是正确的方向。创建模拟控制器并不是一种优雅的方式,因为Wiremck是可用的。 例如get(" http://other server . com/service