我正在尝试为我的spring应用程序编写集成测试,我有一个插入一些默认数据的api,我在测试初始化后运行调用此api
@PostConstruct
public void inti() {
ResponseEntity<String> response = restTemplate.getForEntity("/api/default", String.class);
assertEquals("Default values are not inserted successfully", "lala", response.getBody());
}
这传递了,我可以在数据库中看到默认值。
在我的测试中,我尝试获取一些数据,但返回的数据为0,尽管我手动测试了api并且其工作
@Test
public void shouldReturnDeliveryNotes() {
ResponseEntity<PagedResources<DeliveryNote>> allDeliveryNotes = restTemplate.exchange("/api/deliverynotes/all?start=0&length=1000",HttpMethod.GET,null, new ParameterizedTypeReference<PagedResources<DeliveryNote>>() {});
assertNotEquals("Should have default delivery notes", 0, allDeliveryNotes.getBody().getContent().size());
}
我在api中放了一些日志来查看返回的数据大小,我看到测试运行时返回的数据是正确的,这意味着我的测试正在点击正确的api并且api获取数据。
@GetMapping("/all")
public ResponseEntity<Page<DeliveryNoteDTO>> getAllDeliveryNote(@RequestParam(value = "start", required = false) int start, @RequestParam(value ="length", required = false) int length) {
Pageable pageable = new OffsetBasedPageRequest(start, (length ==0? Integer.MAX_VALUE: length));
List<DeliveryNote> page = this.deliveryNoteService.getAllDeliverNotes();
List<DeliveryNoteDTO> dtoList =page.stream().map(post -> convertToDto(post)).collect(Collectors.toList());
Page<DeliveryNoteDTO> pageDto = new PageImpl<>(dtoList, pageable, dtoList.size());
System.out.println("size = "+pageDto.getNumberOfElements());
return new ResponseEntity<Page<DeliveryNoteDTO>>(pageDto,HttpStatus.OK);
}
感谢任何帮助
答案 0 :(得分:0)
问题是我正在返回Page而在我的restTemplate中我期待PagedResources,只返回页面是有意义的但我需要一个具体的类,我会使用PageImpl但问题是PageImple没有默认的构造函数RestTemplate用于映射响应,所以我做了什么我创建了一个新类并扩展了PageImpl,就像在这个问题的接受答案中提到的那样