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")