MockMvc JsonPath跳过前缀

时间:2015-10-15 14:51:29

标签: java json spring spring-mvc mockmvc

我无法找到解决该问题的方法...... 基本上我想测试一些产生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:无效的容器对象 at   com.jayway.jsonpath.JsonPath.read(JsonPath.java:180)at   com.jayway.jsonpath.JsonPath.read(JsonPath.java:211)at   org.springframework.test.util.JsonPathExpectationsHelper.evaluateJsonPath(JsonPathExpectationsHelper.java:98)     在   org.springframework.test.util.JsonPathExpectationsHelper.assertValue(JsonPathExpectationsHelper.java:115)     在   org.springframework.test.web.servlet.result.JsonPathResultMatchers $ 2.match(JsonPathResultMatchers.java:68)     在   org.springframework.test.web.servlet.MockMvc $ 1.andExpect(MockMvc.java:152)

有没有办法跳过给定的前缀并让jsonpath正常工作?也许是全球配置?

编辑以澄清这种情况,前缀是在jackson http消息转换器中声明的:

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

修改 here指向相关jira问题的链接

0 个答案:

没有答案