问题标签 [spring-cloud-contract]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
831 浏览

spring - Spring Cloud Contract 和普通 Spring AMQP

我们在 Spring Boot 项目中使用普通的Spring AMQP

我们希望确保我们的消息消费者可以针对真实消息进行测试,并避免针对静态测试消息进行测试。

因此,我们的生产者可以在测试阶段生成消息片段,消费者测试可以获取这些消息片段,以确保它针对最新的消息版本进行测试,并查看生产者中的更改是否会破坏消费者。

似乎Spring Cloud Contract正是这样做的。那么有没有办法将spring cloud contract与spring amqp集成呢?任何有关前进方向的提示都将受到高度赞赏。

0 投票
0 回答
264 浏览

java - Spring Cloud Contract 不适用于 Spring Boot 1.4.1

我正在尝试使用 Spring Cloud Contract 功能构建一个基本示例。

使用 Spring Tool Suite 向导添加 Spring Cloud Contract 我必须选择 Spring-Boot 版本 1.4.1 或更高版本。

但是,当我创建一个使用 Spring Boot 1.4.1 和 Spring Contract 1.0.1.RELEASE 的项目时,我的所有集成测试都失败并出现以下错误:

我还尝试下载官方示例(服务器消费者项目)。

它们都可以完美运行,但是它们使用的是非稳定版本的 Spring-Boot:

当我尝试将此版本更改为 1.4.1 时,它们都失败并出现相同的错误。

有谁知道如何配置 Spring Cloud Contract?那里有例子吗?

0 投票
1 回答
533 浏览

java - 上下文配置期间的 StubNotFoundException

我正在尝试将 spring 云合同添加到我的 jHipster 应用程序中。这是一个基本的 Spring Boot 微服务应用程序。我为微服务编号 1 生成存根没有任何问题,但是当我尝试使用它时,我得到:

org.springframework.cloud.contract.stubrunner.StubNotFoundException:未找到带有符号测试的存根的存根

我使用的是 SC-Contract 1.0.1.RELEASE 版本。

jHipster 没有使用@SpringBootApplication注释,所以我必须使用@SpringBootTest(classes=...). 就我而言:

@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT, classes=TestApp.class)

这是 TestApp.java:

最后,这是我的测试类(简化):

堆栈跟踪 :

谢谢您的帮助 !

0 投票
1 回答
479 浏览

spring - 与 Jersey 的 Spring Cloud 合约

我有一个简单的项目 Spring boot 项目。它包含一个基于 Jersey 的控制器:@Path("persons") @Produces(MediaType.APPLICATION_JSON) public class PersonsController {

它按预期返回 json 响应(网址:http://localhost:PORT/persons):

我的目标是为此控制器添加 Spring Cloud Contract 测试。我已经添加了所有必需的 mvn 配置,并测试:

这是合同(groovy 文件):import org.springframework.cloud.contract.spec.Contract

当我运行时mvn clean package总是返回以下错误:失败的测试:

我相信这应该与 ServletDispatcher 有关,因为它看不到泽西岛的路径。将@Path 替换为@RequestMapping 的同一个项目可以工作。但是,我需要让它与泽西岛一起工作。我错过了什么吗?

0 投票
1 回答
1137 浏览

spring-cloud-contract - 使用 Spring Cloud Contract,如何为不同的主机/端口设置多个 Wiremock 存根?

使用 Spring Cloud Contract 设置多个 Wiremock 存根的最佳方法是什么,这些存根具有不同的主机/端口,并且都在由单个 @Test 方法执行的代码中调用?比如我要测试ServiceA.doSomething(),这个方法调用ServiceB.doSomethingElse()和ConsulClient.getKVValue()。创建 WireMockRestServiceServer 的一个实例没有问题,但我还没有弄清楚如何创建第二个以在指向不同基本 URL 的同一测试中使用。我尝试这样做的原因是因为我需要将我们对 Consul 的调用存根,并且我需要将这些请求始终发送到http://localhost:8500,从而我的其他请求通过负载发送平衡的 RestTemplate。我希望我已经清楚地解释了我的情况。

0 投票
1 回答
647 浏览

spring-cloud-contract - HTTPS 和 Spring Cloud Contract Stub Runner

通过负载平衡的 RestTemplate 发送 https 请求时,我收到以下堆栈跟踪:

如何配置 Spring Cloud Contract Stub Runner 以使我的 Spring Cloud 存根能够通过 HTTPS 访问?

0 投票
1 回答
5109 浏览

spring-cloud - 为可能的空数组定义合同?

我正在尝试使用 Spring-Cloud-Contract 定义一个 CDC 合同,如下所示:

在生成的测试中,这会导致以下断言:

但是在我的测试中,我想允许 section 数组为空,就像第一个示例一样。现在,如果我的测试实现返回一个空的sections 数组,则生成的测试将失败,因为它找不到空数组的section id。

我也尝试了 optional(),但唯一的区别是正则表达式包含一个“?” 在最后。JSON 断言仍然失败。

在存根中,两个结果都返回,但对于测试,我希望测试对两者都成功。测试断言是否纯粹在每个属性的最后一次出现时生成?数组上是否不可能有“可选()”之类的东西?

0 投票
1 回答
151 浏览

spring-boot - Spring Cloud Contract 工作的 Spring Boot 最低版本要求?

我在我的客户端应用程序中使用最新的 Spring Boot 1.3,我想介绍 Spring Cloud Contract:

我能够从生产者端生成存根,但从消费者端,我无法调整https://cloud.spring.io/spring-cloud-contract/上给出的示例。

我正在用 SpringJUnit4ClassRunner 替换测试运行器 SpringRunner(Spring Boot 1.3 不可用),但 @AutoConfigureStubRunner 注释似乎被忽略了。

我没有看到 Spring Cloud Contract 页面中提到的对 Spring Boot 版本的任何要求:有吗?

0 投票
1 回答
1602 浏览

java - 在我的本地仓库中找不到 Spring Cloud 合约存根

使用 Spring Cloud Contract 1.0.2.RELEASE,我可以在本地 Maven 存储库中发布存根,但是当我运行测试时,消费者端找不到它们。

看起来在消费者方面,它为本地 maven 存储库选择了与生产者不同的位置:尽管 Spring Cloud Contract 和 Aether 库的日志记录很好,但我花了一段时间才弄清楚,因为我使用的位置本地 Maven 存储库与默认存储库类似(但不同)。

我正在使用 Maven 3.3.1。

0 投票
1 回答
401 浏览

java - Spring Cloud Contract:无法解析本地仓库中最新版本的存根

我正在使用 Spring Cloud Contract 1.0.2.RELEASE 并且能够在我的本地 Maven 存储库中发布 stuc。

在消费者方面,我然后配置我的测试:

“+”应该意味着我将在我的本地 repo 中获得最新版本,但它无法解决依赖关系。但是,如果我给出精确的版本而不是 "+" ,那么它可以工作。

我错过了什么?