So holen Sie die Antwort mit WebTestClient
Posted: 25 Feb 2025, 10:40
Ich bin neu in der reaktiven Programmierung und bei Problemen. Ich habe ein sehr einfaches Szenario, < /p>
Eine Entität: < /p>
Was ich im Wesentlichen möchte, ist in der Lage, die Scheibe zu erhalten und in der Lage zu sein, Behauptungen darüber auszuführen.
Eine Entität: < /p>
Code: Select all
class SimpleEntity{
@Id
int id;
String name;
}
< /code>
Ein zugehöriges Repository: < /p>
class SimpleEntityRepository extends JpaRepository{
Slice findByName(String name, Pageable pageable);
}
< /code>
Ein verwandter Dienst: < /p>
class SimpleEntityService{
@Autowired
SimpleEntityRepository repository;
public Mono findByName(String name, Pageable pageable){
//All business logic excluded
return Mono.just(
repository.findByName(name, pageable);
);
}
}
< /code>
Ein zugehöriger Controller: < /p>
class SimpleEntityController{
@Autowired
SimpleEntityService service;
@RequestMapping("/some-mapping")
public Mono findByName(@Requestparam String name, int pageNum){
return service.findByName(name, Pageable.of(pageNum, 100));
}
}
< /code>
In meinen Integrationstests versuche ich jetzt mit WebTestClient auf den Controller, aber ich kann nicht verstehen, wie ich die Antwort abrufen und deserialisieren kann: < /p>
@Test
public void someIntegrationTest(){
WebTestClient.ResponseSpec responseSpec = webTestClient.get()
.uri(URI)
.accept(MediaType.APPLICATION_JSON)
.exchange();
responseSpec.returnResult(SliceImpl.class).getResponseBody.blockFirst();
}
< /code>
Die letzte Zeile löst die folgende Ausnahme aus: < /p>
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of org.springframework.data.domain.Pageable (no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: org.springframework.data.domain.SliceImpl["pageable"])
Was ich im Wesentlichen möchte, ist in der Lage, die Scheibe zu erhalten und in der Lage zu sein, Behauptungen darüber auszuführen.