MockMvc JsonPath пропускает префикс

Я пока не могу найти решение этой проблемы... В основном я хотел бы протестировать некоторые ресурсы отдыха, которые выдают ответ json, префикс json содержит строку безопасности, например:

"qwerty{"status":"success"}"

конечно, с префиксом это не допустимый json, следовательно, путь json терпит неудачу:

mockMvc.perform(get("/myresource")
    .contentType(MediaType.APPLICATION_JSON)
    .accept(MediaType.APPLICATION_JSON))
    .andExpect(status().isOk())
    .andDo(print())
    .andExpect(jsonPath("$.status").value("success"))

со следующей ошибкой:

java.lang.IllegalArgumentException: недопустимый объект контейнера на com.jayway.jsonpath.JsonPath.read(JsonPath.java:180) на com.jayway.jsonpath.JsonPath.read(JsonPath.java:211) на org.springframework.test.util.JsonPathExpectationsHelper.evaluateJsonPath(JsonPathExpectationsHelper.java:98) в org.springframework.test.util.JsonPathExpectationsHelper.assertValue(JsonPathExpectationsHelper.java:115).java:68) на org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:152)

Есть ли способ пропустить данный префикс и позволить jsonpath работать правильно? Может с глобальной конфигурацией?

РЕДАКТИРОВАТЬ, чтобы прояснить случай, префикс объявлен в конвертере сообщений http Джексона:

@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON));
    converter.setPrefixJson(true);
    converter.setJsonPrefix("qwerty");
    return converter;
}

Отредактируйте здесь ссылку на связанную проблему jira

0 ответов

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