问题标签 [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.
spring - Spring Cloud Contract 和普通 Spring AMQP
我们在 Spring Boot 项目中使用普通的Spring AMQP。
我们希望确保我们的消息消费者可以针对真实消息进行测试,并避免针对静态测试消息进行测试。
因此,我们的生产者可以在测试阶段生成消息片段,消费者测试可以获取这些消息片段,以确保它针对最新的消息版本进行测试,并查看生产者中的更改是否会破坏消费者。
似乎Spring Cloud Contract正是这样做的。那么有没有办法将spring cloud contract与spring amqp集成呢?任何有关前进方向的提示都将受到高度赞赏。
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?那里有例子吗?
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:
最后,这是我的测试类(简化):
堆栈跟踪 :
谢谢您的帮助 !
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 的同一个项目可以工作。但是,我需要让它与泽西岛一起工作。我错过了什么吗?
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。我希望我已经清楚地解释了我的情况。
spring-cloud-contract - HTTPS 和 Spring Cloud Contract Stub Runner
通过负载平衡的 RestTemplate 发送 https 请求时,我收到以下堆栈跟踪:
如何配置 Spring Cloud Contract Stub Runner 以使我的 Spring Cloud 存根能够通过 HTTPS 访问?
spring-cloud - 为可能的空数组定义合同?
我正在尝试使用 Spring-Cloud-Contract 定义一个 CDC 合同,如下所示:
在生成的测试中,这会导致以下断言:
但是在我的测试中,我想允许 section 数组为空,就像第一个示例一样。现在,如果我的测试实现返回一个空的sections 数组,则生成的测试将失败,因为它找不到空数组的section id。
我也尝试了 optional(),但唯一的区别是正则表达式包含一个“?” 在最后。JSON 断言仍然失败。
在存根中,两个结果都返回,但对于测试,我希望测试对两者都成功。测试断言是否纯粹在每个属性的最后一次出现时生成?数组上是否不可能有“可选()”之类的东西?
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 版本的任何要求:有吗?
java - 在我的本地仓库中找不到 Spring Cloud 合约存根
使用 Spring Cloud Contract 1.0.2.RELEASE,我可以在本地 Maven 存储库中发布存根,但是当我运行测试时,消费者端找不到它们。
看起来在消费者方面,它为本地 maven 存储库选择了与生产者不同的位置:尽管 Spring Cloud Contract 和 Aether 库的日志记录很好,但我花了一段时间才弄清楚,因为我使用的位置本地 Maven 存储库与默认存储库类似(但不同)。
我正在使用 Maven 3.3.1。
java - Spring Cloud Contract:无法解析本地仓库中最新版本的存根
我正在使用 Spring Cloud Contract 1.0.2.RELEASE 并且能够在我的本地 Maven 存储库中发布 stuc。
在消费者方面,我然后配置我的测试:
“+”应该意味着我将在我的本地 repo 中获得最新版本,但它无法解决依赖关系。但是,如果我给出精确的版本而不是 "+" ,那么它可以工作。
我错过了什么?