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

Spring boot 合同测试-具有外部SOAP/REST下游服务的Spring Boot微服务,spring-boot,pact,spring-cloud-contract,contract,Spring Boot,Pact,Spring Cloud Contract,Contract,我们有一组相互通信的微服务和一些外部下游服务。SpringCloudContract用于集成测试,以检查服务接口。我能够测试微服务之间的通信合同 我想知道如何为生产商编写合同测试 不提供任何合同(无法访问源代码) 基于SOAP的 我可以强制消费者自己签订合同吗 无法找到SCC文档在这方面的帮助。任何有用的指点都将不胜感激。谢谢 如果它是基于SOAP的,那么它就是基于XML的标准通信。您可以生成基于XML的合同(这里是一个示例)。现在,对于无法访问源代码的代码,您可以执行以下操作: 您可以创

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

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

  • 不提供任何合同(无法访问源代码)
  • 基于SOAP的
我可以强制消费者自己签订合同吗


无法找到SCC文档在这方面的帮助。任何有用的指点都将不胜感激。谢谢

如果它是基于SOAP的,那么它就是基于XML的标准通信。您可以生成基于XML的合同(这里是一个示例)。现在,对于无法访问源代码的代码,您可以执行以下操作:

  • 您可以创建一个测试,该测试将通过代理(例如WireMock代理)传递到实际应用程序,这样您将以存根()的形式存储该通信,您还可以检查代码()。这里的问题是生产者可能不是幂等的,或者可能需要对输入进行大量的具体设置才能得到正确的响应(例如,精确定义的日期)
  • 您可以在消费者端创建契约,告诉stubrunner它们在哪里()并打开
    generateSubs
    功能(),代码的示例()。这里的问题是,作为一个消费者,你可以写任何你想写的东西,而这可能与现实没有任何关系。另一方面,你已经有了合同,你可以上传到生产方,要求他们在某一天实施他们的部分
这取决于你决定你喜欢哪一个,记住每个解决方案都可能有它的问题


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

你看过像pact.io这样的工具吗?@Matthew-是的,我看过。也无法使用Pact找到解决方案。非常抱歉,Amer。我在手机上回复了这个,但没有看到标签。自从我提出这个问题以来,这个问题似乎也发生了变化,所以我的回答似乎与此无关。马辛在回答问题上做得很好