gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:34:40 25 4
gpt4 key购买 nike

在 Spring Boot 应用程序(springBootVersion = '2.1.1.RELEASE')中,我有两个 ReST 端点。第一个返回对象,第二个返回对象列表。我尝试使用 MockMvc 为该端点编写测试.

测试单个对象,按预期工作。对象列表测试返回 406 而不是 200。下面是我的代码、 Controller +测试。单个对象休息:

@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 编码

关于java - MockMVC 对于对象列表返回 406(对于一个对象测试有效),为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57632262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com