当前位置: 首页 > 知识库问答 >
问题:

Spring Boot:使用TestRestTemboard测试分页结果

葛承嗣
2023-03-14

我有一个资源a,它有一个控制器,其中包含一个用于检索分页a项的endpoint:

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

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

电话是这样的:

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

这里是例外:

  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分页结果时的可测试性。


共有1个答案

林和煦
2023-03-14

Page更改控制器的响应

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

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

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

 类似资料:
  • 我在我的模型中使用LocalDateTime,在包括LocalDateTimeDeserializer之后,将bean字段转换为 包括 属性在SpringBoot的应用程序中。属性文件,应用程序最终能够反序列化JSON并正确显示如下内容:, 但是,当我进行测试时,它会忽略WRITE_DATES_AS_TIMESTAMPS标志,我猜它会为上面相同的字符串日期生成一个输出, 请注意,在测试资源文件夹中

  • 我正在尝试使用cassandra实现分页,但我在Stackoverflow上没有得到任何成功的解决方案。我遇到的突出错误是“对第一个页面以外的页面进行分页查询需要具有有效分页状态的CassandraPageRequest”。请协助。

  • 我有几个繁重的Spring集成测试(是的,这不是最好的方法,我没有时间正确地模拟所有外部dep) 下面是测试的典型注释 由于以下原因,测试会定期失败: 这里有两个问题:1、让测试共存的正确方式是什么?我在surefire插件中设置了forkCount=0。好像有帮助 2.1. 在每次测试期间,我实际上不需要启动所有的

  • 我正在使用TestRestTemplate对我们的产品进行集成测试。 我有一个测试如下: 此特定请求需要一个标头值。有人能告诉我如何向TestRestTemplate调用添加标题吗?

  • 在Eclipse和Maven中运行基于SpringBoot的Java单元测试时,我得到了不同的结果。 我的测试成功地从命令行使用maven(mvn测试)运行,但在Eclipse中运行失败。 我使用与JDK相同的配置,在Eclipse中作为Maven Projekt导入。所以设置几乎相同,但结果却不一样:( 我有什么办法解决这个问题吗?或者有没有类似的问题? 其中大多数是我在使用eclipse运行测

  • 与@mockbean和@spybean一样,有没有类似于@fakebean/@dummybean的东西? 其思想是,该实例是100%真实的(具有预期的生产内部状态),并且它覆盖(或者添加bean,以防在配置中没有声明)上下文中的bean。理想情况下,您不需要创建TestConfiguration类并将其设置为Primary,因为这样可以在每个测试的基础上控制假冒,只有在需要时才可以。否则它使用主的