Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对使用存储库的服务层进行Spring单元测试?_Java_Spring_Unit Testing - Fatal编程技术网

Java 如何对使用存储库的服务层进行Spring单元测试?

Java 如何对使用存储库的服务层进行Spring单元测试?,java,spring,unit-testing,Java,Spring,Unit Testing,我正在开发一个SpringREST应用程序,有一个使用存储库访问数据库的服务,可以恢复我使用MongoDB的N个最后文档 因此,我的服务具有以下功能: @Async public CompletableFuture<List<MessageLogViewDto>> listLogs(int total) { // Request the entities using PageRequest to list only last N registers ordered b

我正在开发一个SpringREST应用程序,有一个使用存储库访问数据库的服务,可以恢复我使用MongoDB的N个最后文档

因此,我的服务具有以下功能:

@Async
public CompletableFuture<List<MessageLogViewDto>> listLogs(int total) {
  // Request the entities using PageRequest to list only last N registers ordered by DATE (DESC). I don't known a better way to do this!
  PageRequest page = new PageRequest(0, total, Sort.Direction.DESC, "Date");
  Page<MessageLog> messages = logRepo.findAll(page);

  // Convert the Entity to DTO
  List<MessageLogViewDto> messageList = messages.getContent().stream().map(
    message -> convertDto.toMessageLogView(message)).collect(Collectors.toList());

  return CompletableFuture.completedFuture(messageList);
}

有什么帮助吗?

这可能是一个有点争议的观点,但我只关注单元测试您的转换器,因为在这个方法中没有其他有意义的自定义逻辑

看看它的方法:

// 1 - Create an instance of a Spring class
PageRequest page = new PageRequest(0, total, Sort.Direction.DESC, "Date");
// 2 - Query a Spring Repository with the Spring Class
Page<MessageLog> messages = logRepo.findAll(page);

// 3 - CUSTOM LOGIC to convert result to custom DTO class
List<MessageLogViewDto> messageList = messages.getContent().stream().map(
        message -> convertDto.toMessageLogView(message)).collect(Collectors.toList());

// 4 - Return a Java standard CompleteableFuture 
return CompletableFuture.completedFuture(messageList);

然后,您可以简单地使用各种情况测试该方法,包括有效数据、空/空列表等。

。然后返回新页面ImplSomeListOfTestData,或者使用一些答案测试args.tks@RC。现在就试试!tks@Ben。我意识到返回值的模拟必须是预期的大小。所以,我的mock只是返回了一个null值,然后检查是否使用正确的参数pagesize、orderby等调用了存储库。然后,对转换器进行了另一个测试。
// 1 - Create an instance of a Spring class
PageRequest page = new PageRequest(0, total, Sort.Direction.DESC, "Date");
// 2 - Query a Spring Repository with the Spring Class
Page<MessageLog> messages = logRepo.findAll(page);

// 3 - CUSTOM LOGIC to convert result to custom DTO class
List<MessageLogViewDto> messageList = messages.getContent().stream().map(
        message -> convertDto.toMessageLogView(message)).collect(Collectors.toList());

// 4 - Return a Java standard CompleteableFuture 
return CompletableFuture.completedFuture(messageList);
List<MessageLogViewDTO> convertMessageLogsToMessageLogViewDTO(List<MessageLog> messages) {
  return messages.getContent().stream().map(
    message -> convertDto.toMessageLogView(message)).collect(Collectors.toList());
}