簡體   English   中英

Spring Boot:使用 TestRestTemplate 測試分頁結果

[英]Spring boot: testing paged results using TestRestTemplate

我有一個資源 A,它有一個控制器,其中包含一個用於檢索分頁 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 );

這是例外:

  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>更改為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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM