Исключение документации pathParameters (шаблон urlTemplate не найден)

Когда используешь pathParameters документировать параметры пути URI, как показано ниже

@Test
public void documentGetRouteById() throws Exception {
    this.mockMvc.perform(get("/route/{id}", "FooBar")).andExpect(status().isOk())
            .andDo(document("api-getRouteById",
                    pathParameters(parameterWithName("id").description("die Routen ID"))));
}

Я получаю следующее исключение

java.lang.IllegalArgumentException: urlTemplate not found. Did you use RestDocumentationRequestBuilders to build the request?
    at org.springframework.util.Assert.notNull(Assert.java:112)
    at org.springframework.restdocs.request.PathParametersSnippet.extractUrlTemplate(PathParametersSnippet.java:95)
    at org.springframework.restdocs.request.PathParametersSnippet.extractActualParameters(PathParametersSnippet.java:82)
    at org.springframework.restdocs.request.AbstractParametersSnippet.verifyParameterDescriptors(AbstractParametersSnippet.java:77)
    at org.springframework.restdocs.request.AbstractParametersSnippet.createModel(AbstractParametersSnippet.java:65)
    at org.springframework.restdocs.request.PathParametersSnippet.createModel(PathParametersSnippet.java:67)
    at org.springframework.restdocs.snippet.TemplatedSnippet.document(TemplatedSnippet.java:64)
    at org.springframework.restdocs.mockmvc.RestDocumentationResultHandler.handle(RestDocumentationResultHandler.java:101)
    at org.springframework.test.web.servlet.MockMvc$1.andDo(MockMvc.java:158)

Я почти уверен, что выполнил тестовую настройку, как описано здесь.

Что я мог сделать неправильно?

(Spring REST docs версия 1.0.0.BUILD-SNAPSHOT)

1 ответ

Решение

Сообщение об исключении пытается указать вам правильное направление:

Шаблон URL не найден. Вы использовали RestDocumentationRequestBuilders для создания запроса?

Вам нужно использовать RestDocumentationRequestBuilders так что Spring REST Docs может захватить URL и извлечь из него параметры. Это упоминается в документации, где говорится:

Чтобы сделать параметры пути доступными для документации, запрос должен быть построен с использованием одного из методов RestDocumentationRequestBuilders, а не MockMvcRequestBuilders.

Замена вашего статического импорта MockMvcRequestBuilders.get с одним для RestDocumentationRequestBuilders.get должен решить проблему.

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