spring 云合约POC
spring cloud contract POC
我正在尝试为我的团队创建一个示例 POC 以使用 Spring 云合同。
我能够收到生产者方面的绿色通行证,但在消费者方面,我一直收到
No stubs or contracts were found for [com.datson:cloudcontract-producer:+:stubs] and the switch to fail on no stubs was set.
合同存在。
我尝试了官方 spring 云文档中描述的几个用户案例。
@AutoConfigureStubRunner(ids = "com.datson:cloudcontract-producer:+:8080", stubsMode = StubRunnerProperties.StubsMode.LOCAL)
@AutoConfigureStubRunner(ids = "com.datson:cloudcontract-producer:+:stubs"
这是消费者代码示例:https://github.com/Yayan89/springboot-config-server/tree/master/cloudcontract-consumer
这里是生产者代码示例:https://github.com/Yayan89/springboot-config-server/tree/master/cloudcontract-producer
可能是我错过了一些愚蠢的事情。
在提供的示例中,您需要在本地 m2 中安装一个 jar 以从消费者端获取它(请阅读有关如何直接从驱动器获取合同的文档)。如果你检查这个示例和 gradle 构建 https://github.com/spring-cloud-samples/spring-cloud-contract-samples/blob/master/scripts/runGradleBuilds.sh#L37 你会发现你应该 运行 像这样
./gradlew build publishToMavenLocal
假设您有 maven-publish
插件或
./gradlew build install
假设您有一个 maven
插件
感谢@MarcinGrejszzak 的回复,我只想确认一件事我是否理解正确。生产者需要为消费者发布 mavenlocal (.m2) 才能构建它。我的说法正确吗?
id 'maven-publish'
我们需要在 gradle/mvn build
中添加我们的生产者
implementation("com.datson:cloudcontract-producer:+:stubs") {
transitive = false
}
我的代码现在适用于
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)
@AutoConfigureStubRunner(
stubsMode = StubRunnerProperties.StubsMode.LOCAL,
ids = "com.datson:cloudcontract-producer:+:stubs:0.0.1:8090"
)
@AutoConfigureMockMvc
public class LoanApplicationServiceTest {
@Autowired
MockMvc mockMvc;
@Test
public void given_WhenPassEvenNumberInQueryParam_ThenReturnEven() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.put("/fraudcheck")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("Even"));
}}
我正在尝试为我的团队创建一个示例 POC 以使用 Spring 云合同。
我能够收到生产者方面的绿色通行证,但在消费者方面,我一直收到 No stubs or contracts were found for [com.datson:cloudcontract-producer:+:stubs] and the switch to fail on no stubs was set.
合同存在。
我尝试了官方 spring 云文档中描述的几个用户案例。
@AutoConfigureStubRunner(ids = "com.datson:cloudcontract-producer:+:8080", stubsMode = StubRunnerProperties.StubsMode.LOCAL)
@AutoConfigureStubRunner(ids = "com.datson:cloudcontract-producer:+:stubs"
这是消费者代码示例:https://github.com/Yayan89/springboot-config-server/tree/master/cloudcontract-consumer
这里是生产者代码示例:https://github.com/Yayan89/springboot-config-server/tree/master/cloudcontract-producer
可能是我错过了一些愚蠢的事情。
在提供的示例中,您需要在本地 m2 中安装一个 jar 以从消费者端获取它(请阅读有关如何直接从驱动器获取合同的文档)。如果你检查这个示例和 gradle 构建 https://github.com/spring-cloud-samples/spring-cloud-contract-samples/blob/master/scripts/runGradleBuilds.sh#L37 你会发现你应该 运行 像这样
./gradlew build publishToMavenLocal
假设您有 maven-publish
插件或
./gradlew build install
假设您有一个 maven
插件
感谢@MarcinGrejszzak 的回复,我只想确认一件事我是否理解正确。生产者需要为消费者发布 mavenlocal (.m2) 才能构建它。我的说法正确吗?
id 'maven-publish'
我们需要在 gradle/mvn build
implementation("com.datson:cloudcontract-producer:+:stubs") {
transitive = false
}
我的代码现在适用于
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)
@AutoConfigureStubRunner(
stubsMode = StubRunnerProperties.StubsMode.LOCAL,
ids = "com.datson:cloudcontract-producer:+:stubs:0.0.1:8090"
)
@AutoConfigureMockMvc
public class LoanApplicationServiceTest {
@Autowired
MockMvc mockMvc;
@Test
public void given_WhenPassEvenNumberInQueryParam_ThenReturnEven() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.put("/fraudcheck")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("Even"));
}}