Не генерирует заглушку с помощью WireMockRestDocs и SpringAutoRestDocs

Я использую Spring Auto REST Docs - это расширение Spring REST Docs для генерации документации API, и я делаю настройку MockMvc, как в документации.

Кроме того, в то же время я хочу создать заглушку WireMock с " http://cloud.spring.io/spring-cloud-contract/1.0.x/"

Я следую этим примерам: https://github.com/spring-cloud-samples/spring-cloud-contract-samples

Моя проблема в том, что когда я создаю пользовательскую настройку, заглушка WireMock не создается, и когда я использую конфигурацию по умолчанию MockMvc, но мне также нужна пользовательская конфигурация.

 @Before
 public void setUp() {
        this.mockMvc = MockMvcBuilders
                .webAppContextSetup(context)
                .alwaysDo(prepareJackson(objectMapper))
                .alwaysDo(document("{class-name}/{method-name}",
                                   preprocessRequest(), commonResponsePreprocessor()))
                .apply(documentationConfiguration(restDocumentation)
                               .uris()
                               .and().snippets()
                               .withDefaults(curlRequest(), httpRequest(), httpResponse(),
                                             requestFields(), responseFields(), pathParameters(),
                                             requestParameters(), description(), methodAndPath(),
                                             section()))
                .build();
}


 @Test
  public void getTemplate() throws Exception {
    this.mockMvc.perform(get("/")
                                 .contentType(MediaType.APPLICATION_JSON)
                                 .accept(MediaType.APPLICATION_JSON))
            .andExpect(status().isOk())
            .andExpect(jsonPath("result", is("success")))
            .andExpect(jsonPath("version", is("0.0.1")))
            .andDo(WireMockRestDocs.verify().stub("getFlapTemplate"))
            .andDo(MockMvcRestDocumentation.document("getFlapTemplate", SpringCloudContractRestDocs.dslContract()));
}

Можно ли сгенерировать заглушку WireMock с пользовательской конфигурацией?

1 ответ

Я получил это работает, добавив new WireMockSnippet() к списку фрагментов:

 public void setUp() {
        this.mockMvc = MockMvcBuilders
                .webAppContextSetup(context)
                .alwaysDo(prepareJackson(objectMapper))
                .alwaysDo(document("{class-name}/{method-name}",
                                   preprocessRequest(), commonResponsePreprocessor()))
                .apply(documentationConfiguration(restDocumentation)
                               .uris()
                               .and().snippets()
                               .withDefaults(curlRequest(), httpRequest(), httpResponse(),
                                             requestFields(), responseFields(), pathParameters(),
                                             requestParameters(), description(), methodAndPath(),
                                             section(), new WireMockSnippet()))
                .build();
}

Его необходимо добавить явно, поскольку автоматическая настройка Spring Cloud Contract Wiremock работает только с Spring REST Docs, а не с Spring Auto REST Docs. При запуске с Spring REST Docs следующая строка добавляет фрагмент: https://github.com/spring-cloud/spring-cloud-contract/blob/master/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/WireMockRestDocsConfiguration.java#L43

Другие вопросы по тегам