[英]MockMVC returns 406 for the list of objects (for one object test works), why?
在Spring Boot应用程序中(springBootVersion ='2.1.1.RELEASE'),我有两个ReST端点。 一个返回对象,第二个返回对象列表。 我尝试使用MockMvc为此端点编写测试。
测试单个对象,按预期方式工作。 测试对象列表返回406
而不是200
。 下面是我的代码,控制器+测试。 单对象ReST:
@ResponseBody
@RequestMapping(value = {"/example", "/example.html"})
public ResponseEntity<SampleObject> example() {
SampleObject sampleObj = generateSampleObject();
return new ResponseEntity<>(sampleObj, HttpStatus.OK);
}
并测试:
@Test
public void shouldCheckExamplePage() throws Exception {
MvcResult mvcResult = this.mockMvc.perform(get("/example")
.accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
.andExpect(status().isOk()).andReturn();
}
ReST端点列表:
@ResponseBody
@RequestMapping(value = {"/", "/index.html"})
public ResponseEntity<List<SampleObject>> all() {
List<SampleObject> sampleObjectList = generateListOfSampleObject();
return new ResponseEntity<>(sampleObjectList, HttpStatus.OK);
}
并测试:
@Test
public void shouldCheckHomePage() throws Exception {
MvcResult mvcResult = this.mockMvc.perform(get("/")
.accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
.andExpect(status().isOk()).andReturn();
}
有什么区别? 为什么对一个对象测试有效,但对列表无效?
补充:当我启动应用程序时,在两个端点上的浏览器都可以正常工作。
让我们检查一下代码:
HTTP 406
显示您的后端未返回客户端请求的响应。 APPLICATION_JSON_UTF8_VALUE
APPLICATION_JSON_UTF8_VALUE
表示内容类型为JSON
并且以UTF-8
字符编码进行编码 可能的原因可能是您的列表响应中有一些未使用UTF-8编码的对象
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.