Spring REST Docs - нет содержимого для сопоставления из-за окончания ввода

У меня есть приложение springBoot 2.1.9.RELEASE, которое использует Spring REST Docs.

У меня есть этот метод в моем TestController

@Test
    public void createOK() throws Exception {


        String content = ResourceUtils.getResourceFileAsString ("/new_hostel.json");

        mockMvc.perform(post("/hostel")
                .content(content)
                .contentType(APPLICATION_JSON))
                .andExpect(status().isOk())
                .andDo(document("create-hostel",
                        preprocessRequest(prettyPrint()),
                        preprocessResponse(prettyPrint()),
                        links(halLinks(),
                                linkWithRel("ld:GetHostel").
                                        description("Get Hostel"),
                                linkWithRel("curies").
                                        description("Documentation")),
                        requestFields(
                                fieldWithPath("description").description("The description"),
                                fieldWithPath("name").description("The name"),                              
                                fieldWithPath("id").description("The id")
                        )
                ));
    }

но когда я запускаю его, у меня есть эта ошибка:

org.springframework.restdocs.snippet.ModelCreationException: com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
 at [Source: (byte[])""; line: 1, column: 0]

    at org.springframework.restdocs.hypermedia.LinksSnippet.createModel(LinksSnippet.java:127)
    at org.springframework.restdocs.snippet.TemplatedSnippet.document(TemplatedSnippet.java:81)
    at org.springframework.restdocs.generate.RestDocumentationGenerator.handle(RestDocumentationGenerator.java:201)
    at org.springframework.restdocs.mockmvc.RestDocumentationResultHandler.handle(RestDocumentationResultHandler.java:55)
    at org.springframework.test.web.servlet.MockMvc$1.andDo(MockMvc.java:200)
    at com.bendiciones.buenas.noches.HostelControllerIT.createOK(HostelControllerIT.java:88)

person Sandro Rey    schedule 09.10.2019    source источник
comment
Фрагмент ссылок документирует ссылки в ответе. Судя по ошибке, похоже, что ответ пустой. Что возвращается из POST-запроса к /hostel?   -  person Andy Wilkinson    schedule 09.10.2019
comment
@AndyWilkinson, действительно, это была проблема, пожалуйста, конвертируйте в ответ   -  person Sandro Rey    schedule 10.10.2019


Ответы (1)


Фрагмент ссылок документирует гипермедиа-ссылки в ответе. Судя по ошибке, ответ от вашего контроллера пустой, поэтому ссылок на документ нет. Вы должны либо обновить свой тест, чтобы удалить документацию по ссылкам в ответе на запрос POST, либо обновить метод контроллера, который его обрабатывает, чтобы он возвращал тело, содержащее некоторые ссылки.

person Andy Wilkinson    schedule 10.10.2019