Junit 单元测试中的PageableHandlerMethodArgumentResolver未分析排序方向
我有如下所示的控制器和单元测试。控制器返回一个排序列表。在单元测试中,排序字段正确通过;但是,未分析排序方向: 我以下是这些例子: 控制器:Junit 单元测试中的PageableHandlerMethodArgumentResolver未分析排序方向,junit,spring-boot,Junit,Spring Boot,我有如下所示的控制器和单元测试。控制器返回一个排序列表。在单元测试中,排序字段正确通过;但是,未分析排序方向: 我以下是这些例子: 控制器: @RequestMapping("/telemetry") public Page<TelemetryMessage> List(Pageable pageable) { return telemetryMessageRepository.findAll(pageable); } @Before public void setU
@RequestMapping("/telemetry")
public Page<TelemetryMessage> List(Pageable pageable) {
return telemetryMessageRepository.findAll(pageable);
}
@Before
public void setUp() throws Exception {
mvc = MockMvcBuilders
.standaloneSetup(new TelemetryController(telemetryMessageRepository))
.setCustomArgumentResolvers(new PageableHandlerMethodArgumentResolver())
.setViewResolvers(new ViewResolver() {
@Override
public View resolveViewName(String viewName, Locale locale) throws Exception {
return new MappingJackson2JsonView();
}
})
.build();
// etc.
}
@Test
public void testListReturnsDefault20() throws Exception {
Iterable<TelemetryMessage> expected = telemetryMessageRepository.findAll(new PageRequest(0, 20, Sort.Direction.DESC, "id"));
String json = mapper.writeValueAsString(expected);
MvcResult result = mvc.perform(MockMvcRequestBuilders.get("/telemetry")
.param("sort", "id")
.param("id.dir", "desc")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andReturn();
String actual = result.getResponse().getContentAsString();
}
@RequestMapping(“/telemetry”)
公共页面列表(可分页){
返回telemetryMessageRepository.findAll(可分页);
}
单元测试:
@RequestMapping("/telemetry")
public Page<TelemetryMessage> List(Pageable pageable) {
return telemetryMessageRepository.findAll(pageable);
}
@Before
public void setUp() throws Exception {
mvc = MockMvcBuilders
.standaloneSetup(new TelemetryController(telemetryMessageRepository))
.setCustomArgumentResolvers(new PageableHandlerMethodArgumentResolver())
.setViewResolvers(new ViewResolver() {
@Override
public View resolveViewName(String viewName, Locale locale) throws Exception {
return new MappingJackson2JsonView();
}
})
.build();
// etc.
}
@Test
public void testListReturnsDefault20() throws Exception {
Iterable<TelemetryMessage> expected = telemetryMessageRepository.findAll(new PageRequest(0, 20, Sort.Direction.DESC, "id"));
String json = mapper.writeValueAsString(expected);
MvcResult result = mvc.perform(MockMvcRequestBuilders.get("/telemetry")
.param("sort", "id")
.param("id.dir", "desc")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andReturn();
String actual = result.getResponse().getContentAsString();
}
@之前
public void setUp()引发异常{
mvc=MockMvcBuilders
.standaloneSetup(新遥测控制器(遥测信息存储库))
.SetCustomArgumentResolver(新的PageableHandlerMethodArgumentResolver())
.SetViewResolver(新的ViewResolver(){
@凌驾
公共视图resolveViewName(字符串viewName,区域设置)引发异常{
返回新的MappingJackson2JsonView();
}
})
.build();
//等等。
}
@试验
public void testListReturnsDefault20()引发异常{
Iterable expected=telemetryMessageRepository.findAll(新的页面请求(0,20,Sort.Direction.DESC,“id”);
字符串json=mapper.writeValueAsString(应为);
MvcResult result=mvc.perform(MockMvcRequestBuilders.get(“/telemetry”)
.param(“排序”、“id”)
.param(“id.dir”、“desc”)
.accept(MediaType.APPLICATION_JSON))
.andExpect(状态().isOk())
.andReturn();
字符串实际值=result.getResponse().getContentAsString();
}
使用逗号
分隔属性
和方向
,如下所示:
MvcResult result = mvc.perform(MockMvcRequestBuilders.get("/telemetry")
.param("sort", "id,desc")
//.param("id.dir", "desc")