весенний облачный контракт POC - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь создать пример PO C, чтобы моя команда могла использовать контракт Spring Cloud.

Мне удалось получить Green-Pass для стороны производителя, но на стороне потребителя я продолжаю получать
No stubs or contracts were found for [com.datson:cloudcontract-producer:+:stubs] and the switch to fail on no stubs was set. Контракты присутствуют.

Я пробовал несколько пользовательских случаев, как описано в официальном весеннем облачном документе.

@AutoConfigureStubRunner(ids = "com.datson:cloudcontract-producer:+:8080", stubsMode = StubRunnerProperties.StubsMode.LOCAL)

@AutoConfigureStubRunner(ids = "com.datson:cloudcontract-producer:+:stubs"

https://cloud.spring.io/spring-cloud-contract/reference/html/getting-started.html#getting -started-cd c -consumer-run

вот пример кода пользователя: https://github.com/Yayan89/springboot-config-server/tree/master/cloudcontract-consumer
здесь это пример кода производителя: https://github.com/Yayan89/springboot-config-server/tree/master/cloudcontract-producer

Может быть что-то глупое, что я пропустил.

Ответы [ 2 ]

1 голос
/ 19 января 2020

В представленных примерах вам необходимо установить банку в вашем местном м2, чтобы получить ее со стороны потребителя (ознакомьтесь с документацией о том, как получить контракты непосредственно с накопителя). Если вы проверите этот пример и сборку Gradle https://github.com/spring-cloud-samples/spring-cloud-contract-samples/blob/master/scripts/runGradleBuilds.sh#L37, вы увидите, что вы должны запустить sth как этот

./gradlew build publishToMavenLocal

, предполагая, что у вас есть maven-publish плагин или

./gradlew build install

при условии, что у вас есть maven плагин

0 голосов
/ 20 января 2020

Спасибо за ответ @MarcinGrejszzak, только одна вещь, которую я хочу убедиться, правильно ли я понимаю. Производитель должен опубликовать sh mavenlocal (.m2), чтобы потребитель мог его построить. Правильно ли мое утверждение?

id 'maven-publish', и нам нужно добавить нашего производителя в сборку gradle / mvn

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"));
}}
...