繁体   English   中英

MockMVC返回406对象列表(对于一个对象测试有效),为什么呢?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM