用于其他服务的REST调用的Spring集成测试

时间:2019-02-14 13:11:12

标签: spring-boot integration-testing spring-test

我一直在网上搜索它,但是我发现的大多数示例在同一个项目中都有rest调用的返回逻辑,但是如果要测试正在使用的其他服务的rest调用怎么办?它在您的项目中(从REST API调用REST API)

有什么方法可以整合这个。某些外部服务的REST调用的集成测试

在这种情况下,正常的集成测试方法能否奏效?

1 个答案:

答案 0 :(得分:2)

您是否考虑过使用Spring Cloud Contract(http://cloud.spring.io/spring-cloud-contract/)?这是专门为此目的设计的项目。

您拥有API的生产者及其使用者。 Spring Cloud合同和消费者驱动的合同方法的想法是这样的,即消费者建议生产者的API应该是什么样子。他们可以原型化API,而无需在生产者端编写任何生产代码。原型以“合同”的形式发生。它可以是Groovy或YAML文件(您当然可以扩展框架)。合同的处理导致创建WireMock存根,供消费者在集成测试中使用。换句话说,生产者似乎会为测试透视图准备其代码的小型伪造实现。因此,消费者可以针对生产者端的存根进行集成测试。存根是从合同生成的。假设使用者X要以这样的方式使用API​​:如果GET请求发送到/foo,它将以文本bar进行响应。然后,当在bar端点被命中时,将生成一个以/foo文本响应的存根。

现在,生产者可以重复使用相同的合同来生成测试,以验证其API是否满足合同中的要求。还记得GET @ /foo会以bar示例作为响应吗?如果生产者尝试构建其项目并且没有此类端点,则其构建将被破坏。 Spring Cloud Contract框架会生成测试,这些测试可断言API是否按照应有的方式工作。只有在生产者修复了缺少的实现之后,构建过程才能通过。

这是消费者驱动的合同方式。您还可以采用生产者驱动的方法,其中API的生产者仅定义合同,而无需与消费者沟通每个合同使用API​​的确切程度。

贵重物品链接:

注意:我是Spring Cloud Contract的维护者。