在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();
}
有什么区别?为什么对一个对象测试有效,但对列表无效?
已添加: 当我启动应用程序时,在两个端点上的浏览器都可以正常工作。
答案 0 :(得分:1)
让我们检查一下代码:
APPLICATION_JSON_UTF8_VALUE
显示您的后端未返回客户端请求的响应。APPLICATION_JSON_UTF8_VALUE
JSON
表示内容类型为UTF-8
,并以odbcDriverConnect(connection="Driver={SQL Server Native Client 11.0};server=BRDCVMDB01;database=databases;trusted_connection=yes;")
字符编码进行编码一个可能的原因可能是您的列表响应中有一些未使用UTF-8编码的对象