Проблема с потребительским тестом Spring Cloud Contract

Я тестирую потребительскую сторону весеннего облачного контракта.

Поставщик находится здесь: https://github.com/pkid/spring-cloud-contract-with-surefire.

Банку заглушек, созданную поставщиком, можно найти здесь: https://github.com/pkid/spring-cloud-contract-with-surefire-consumer/blob/master/sample-repo-service-1.0.0.-SNAPSHOT-stubs.jar

Когда я запускаю потребительский тест (источник находится здесь: https://github.com/pkid/spring-cloud-contract-with-surefire-consumer):

@Test
public void shouldGiveFreeSubscriptionForFriends() throws Exception {
    mockMvc.perform(MockMvcRequestBuilders.get("/greeting")
            .contentType(MediaType.APPLICATION_JSON))
            .andExpect(status().isOk())
            .andExpect(content().string("{\"id\":1,\"content\":\"Hello, World!\"}"));
}

Когда я делаю "mvn test", я вижу, что банка с заглушками правильно обнаружена и распакована. Однако я получил сообщение об ошибке, что конечная точка 2 «/ приветствие» не существует (404).

Не могли бы вы мне помочь? Спасибо!


person Yashu    schedule 10.05.2017    source источник


Ответы (1)


Вы используете mockMvc для подключения к экземпляру WireMock. Это не сработает. Измените mockMvc на стороне потребителя на restTemplate

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.MOCK)
@AutoConfigureMockMvc
@AutoConfigureJsonTesters
@DirtiesContext
@AutoConfigureStubRunner(ids = {"com.sap.ngp.test:sample-repo-service:+:stubs:8080"}, workOffline = true)
public class ConsumerTest {

    @Test
    public void shouldGiveFreeSubscriptionForFriends() throws Exception {
        ResponseEntity<String> result = new TestRestTemplate().exchange(RequestEntity
            .get(URI.create("http://localhost:8080/greeting"))
            .header("Content-Type", MediaType.APPLICATION_JSON_VALUE)
            .build(), String.class);

        BDDAssertions.then(result.getStatusCode().value()).isEqualTo(200);
        BDDAssertions.then(result.getBody()).isEqualTo("{\"content\":\"Hello, World!\"}");
    }

}

Прочтите, для чего предназначен mock mvc, в документации http://docs.spring.io/spring-security/site/docs/current/reference/html/test-mockmvc.html

person Marcin Grzejszczak    schedule 10.05.2017
comment
Это действительно сработало для меня. Большое спасибо, Марчин. Очень ценю. Я использовал следующие версии: springCloud = 2020.0.3 bootVersion = 2.5.1 verifierVersion = 3.0.3 - person Rupesh Patil; 16.07.2021