问题标签 [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 回答
1580 浏览

wiremock - 使用 Spring Cloud Contract Groovy DSL,我如何参数化响应以包含请求中的值?

我正在使用 Spring Cloud Contract 为 REST 服务创建存根,以便可以使用 REST 客户端进行测试。我让存根运行器在 Spring Boot 应用程序中工作,并且一切都按预期工作。我遇到的问题是我想在响应中看到请求的元素,以更好地模拟 REST 服务的最终行为。例如,在这个合同中,我希望请求中“代码”字段中传递的内容在响应中出现反刍:

显然,输入“代码”可以是任何与正则表达式匹配的内容,因此实际值在运行之前是未知的。有什么可以代替“???” 返回请求中提交的代码?我尝试访问,例如:

但是该值似乎是在编译时生成的,也许是为了在生成的测试源下的 ContractVerifierTest.java 中启用测试的自动生成。

这可以做到吗?这是对 Spring Cloud Contract 的适当使用吗?

0 投票
1 回答
330 浏览

spring - spring-cloud-contract 设置状态

在验证消费者方面的合同时,我正在尝试使用场景(又名状态)。这些场景是在 Spring Cloud 合约中通过使用 groovy 脚本的数字前缀来定义的,就像在文档中所说的那样:

结果,在wiremock json文件中,我看到添加了“newScenarioState”字段,如下所示:

编写消费者集成测试时如何使用此状态的问题?假设我希望 stab 开关状态为“Step3”。如何在消费者集成测试中做到这一点?

附加信息:在消费者集成测试(即 Junit 测试)中,我使用 StubRunnerRule 而不是 @AutoConfigureStubRunner。所以我希望通过这个规则,我可以使用一些 api 来设置存根的状态。但我什么也没找到。

0 投票
1 回答
242 浏览

spring-cloud-contract - 编译从spring cloud contract groovy DSL生成的测试文件时出错

我正在使用 Springboot 2.4.3,合同验证器 1.0.3 版本使用 Spring Cloud 合同测试。我为基于消息的测试创建了一个 groovy DSL 合同,如下所示

包 doc.messaging

Contract.make {描述'合同'

}

它失败并给出以下错误:

请帮忙。

0 投票
2 回答
444 浏览

spring-cloud-contract - SCC 不支持可分页?

我正在使用spring cloud contract(1.1.0)但是当我想使用Pageable时我完全卡住了

http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Pageable.html

以下示例正在工作,没有可分页

而这个正在使用可分页

我的合同在这里。为第一个示例工作,而不是为第二个示例工作

和堆栈跟踪:

我该怎么办 ?我应该修改什么才能使其正常工作?

0 投票
2 回答
2308 浏览

spring-kafka - Spring Cloud Contract 与 Spring Kafka

Spring Cloud Contract 是否支持开箱即用的 Spring Kafka 消息合约验证?

0 投票
1 回答
5739 浏览

spring-cloud - Spring cloud contract:生成的测试没有配置 MockMVC 并且编译失败

我遇到了这个“你还没有配置 MockMVC 实例”。“mvn clean install”时出现异常。

跑步

org.springframework.cloud.contract.verifier.tests.ContractVerifierTest 测试运行:1,失败:0,错误:1,跳过:0,经过时间:0.185 秒 <<< 失败!- 在 org.springframework.cloud.contract.verifier.tests.ContractVerifierTest validate_shouldGetAmenities(org.springframework.cloud.contract.verifier.tests.ContractVerifierTest) 经过时间:0.184 秒 <<< 错误!java.lang.IllegalStateException:您尚未配置 MockMVC 实例。你可以静态地做到这一点

或使用 DSL:

给定()。模拟MVC(..)。..

问题是,抛出此异常的测试是基于合约生成的测试。

这是合同。

这是生成的测试。

显然,MockMVC 实例并没有在生成的测试中启动。异常消息中的建议是在测试中启动它。但是,它是一个生成的测试(在“目标”文件夹下)。我在那里添加什么都没关系,在“mvn clean install”之后它会被清除。

有没有人遇到过这个?我的合同错了吗?这就是为什么它没有在生成的测试中生成 MockMVC 开始部分?

另一个问题是合约中的 URL 是一个简单的获取。它确实返回 Json 格式的消息。但是现在,我只想通过仅验证状态码 200 而不检查消息来使其非常简单。

关于这个 URL 的另一件事是我在邮递员中尝试了这个 url 并得到了响应。我认为这应该是我在合同中使用的网址。这个假设是错误的吗?我需要以不同的方式在合同中形成这个网址吗?

另外,在邮递员中,当我使用此网址请求此“GET”时,“正文”中没有任何内容。这就是为什么我将合同中的“body”保留为空(“”)。这是正确的做法吗?这会影响生成的测试吗?

任何提示将不胜感激。

0 投票
1 回答
3002 浏览

java - Spring Cloud Contract使用maven时的编译问题

我最近按照他们教程网站上的说明( https://cloud.spring.io/spring-cloud-contract/#quick-start )将spring cloud contract添加到我们的spring项目中。

我设法编写了合同,生成了存根,一切都按预期工作,但是在将一个干净的项目从我们的存储库中拉出来后,我在处理一个干净的项目时遇到了问题。当我让mvn test运行时,在生成的测试类中出现编译错误,因为似乎项目本身之前没有构建,所以生产者站点上的合同测试的基类似乎还不存在。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project kongo-shoppingcart-service: Compilation failure: Compilation failure: [ERROR] [...]/src/kongo-service-shoppingcart/kongo-shoppingcart-service/target/generated-test-sources/contracts/org/springframework/cloud/contract/verifier/tests/ContractVerifierTest.java:[7,64] package edu.hm.ba.kongo.shop.shoppingcart.service.test.contracts does not exist [ERROR] [...]/src/kongo-service-shoppingcart/kongo-shoppingcart-service/target/generated-test-sources/contracts/org/springframework/cloud/contract/verifier/tests/ContractVerifierTest.java:[14,43] cannot find symbol [ERROR] symbol: class ContractTestBase

我的项目 pom 看起来像这样:

http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0

但是当我手动构建模块并运行mvn test后记时,一切都按预期工作。我的 POM 声明有问题吗?

0 投票
1 回答
2193 浏览

java - spring cloud 合约 - Feign Clients

使用 Spring Cloud 合约来验证我的生产者和消费者之间的合约。在我的消费者控制器中,我正在使用 Feign 客户端调用另一个微服务方法来获取一些数据。但是现在在春季云合同中,对这个微服务进行存根调用是不可能的。

将 Spring Cloud 与 Netflix OSS 一起使用。

Config-service 和 eureka 启动了。现在我在本地的 8090 端口安装了我的生产者。消费者使用 Feign 客户端调用生产者来获取一些数据。现在我收到 500 错误。显示找不到 URL。最接近的匹配是 /ping。我相信 Feign 客户端无法模拟,它以某种方式试图与不是来自本地安装的生产者的 eureka 连接。你能帮我吗。

任何例子或任何想法都会很棒。

谢谢

0 投票
1 回答
768 浏览

maven - 无法将 Spring Cloud Contract Maven 插件附加到生命周期阶段

spring-cloud-contract:generateTests如果没有在 Maven 命令行中明确指定目标,我将无法运行。pom.xml的插件配置如下:

当我运行mvn clean install测试时,不会生成测试,尽管明确指定目标可以实现目标。

这是完整的 pom.xml:

0 投票
1 回答
135 浏览

spring - Spring Cloud Contract DSL 是否支持 bodyFileName

我正在尝试使用 spring-cloud-contract 框架定义一个合同,该框架对于特定的请求会返回一个大体的响应。这个身体总是一样的。所以我更愿意将这个主体存储在一些静态文件中。生成的 Wiremock 映射将用于bodyFileName引用具有响应正文内容的静态文件。