我有一个带有方法的控制器,该方法返回分页的资源,如下所示:
@RestController
@RequestMapping(path = "/audit")
public class AuditController {
@RequestMapping(
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public Page<AuditEventDetails> getAuditEvents(Pageable page) {
if (page == null) {
page = PageRequest.of(0, 20);
}
return service.findAll(page);
}
}
我的其他集成测试使用TestRestTemplate
成功调用此REST服务中的方法。但是,我必须指定响应类型为String
才能从分页方法中获取响应:
rest.exchange("/audit", HttpMethod.GET, HttpEntity.EMPTY, String.class);
如果我尝试使用Page
或PageImpl<>
作为响应类型,则会收到无法实例化该类的错误:
ParameterizedTypeReference<Page<AuditEventDetails>> typeReference = new ParameterizedTypeReference<Page<AuditEventDetails>>() {};
ResponseEntity<Page<AuditEventDetails>> response = rest.exchange("/audit", HttpMethod.GET, HttpEntity.EMPTY, typeReference);
使用TestRestTemplate
检索分页响应的正确方法是什么?