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