gpt4 book ai didi

java - Spring 启动 : testing paged results using TestRestTemplate

转载 作者:行者123 更新时间:2023-12-05 07:31:32 33 4
gpt4 key购买 nike

我有一个资源 A,它有一个 Controller ,其中包含一个用于检索分页 A 项目的端点:

      public ResponseEntity getAllAs(
@PageableDefault(size = 25, value = 0) Pageable pageable) {
Page<A> pagedAs = .....
return ResponseEntity.ok(pagedAs);
}

当我尝试创建集成测试并使用 TestRestTemplate 调用此端点时,我遇到了一个问题,因为无法实例化 Page 对象。

调用如下:

    ResponseEntity<Page> response =  template.getForEntity("/api/as,
Page.class );

这里是异常(exception):

  com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.springframework.data.domain.Page` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
at [Source: (PushbackInputStream); line: 1, column: 1]

我想关于 Page 无法实例化这一事实是正常的,但这限制了使用 spring boot 分页结果时的可测试性。

最佳答案

Page<T> 更改 Controller 的响应至 List<T> .

public ResponseEntity getAllAs(
@PageableDefault(size = 25, value = 0) Pageable pageable) {
Page < A > pagedAs = .....
return ResponseEntity.ok(pagedAs);
}

然后将您使用 API 的位置从列表转换为页面

Page<T> page = new PageImpl<>(list);

关于java - Spring 启动 : testing paged results using TestRestTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51733380/

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