junit Mock是一种儿童服务中的抽象服务方法



我有一个TaskService,他扩展了AbstractService。

在抽象服务中,我有一个方法getCurrentUserRoleEntity,用于跨服务的不同方法。此方法使用存储库来查找当前角色。

在我的任务服务中,我有一种方法来查找当前用户角色和类别的任务,这个方法有两个参数,caegoryId和getCurrentUserRoleEntity方法。

public List<Task> findTaskByCategoryIdForCurrentUserRole(Long categoryId) {
return vTacheAffaireRepository.findTaskByCategoryIdForCurrentUserRoleOrderByEcheanceAscTacheIdAsc(categoryId, getCurrentUserRoleEntity().getId())
.stream().map(vTaskMapper::toDto).collect(Collectors.toList());
}

当我测试调用服务的其余资源时,我想模拟getCurrentUserRoleEntity使用我的测试实体,而不是使用真正的方法。

我尝试了不同的方法,但没有一种能满足我的需要。你知道在休息测试中如何模拟这种方法吗?

谢谢,

非常简单的方法是,您可以为getCurrentUserRoleEntity((方法创建一个setter和getter,通过它可以插入模拟对象实例,而不是实际对象实例。

尝试在测试中重写该方法,如果您的方法是公共的,您可以定义一个名为TestTaskService的新类

TestTaskService extends TaskService {
@Override
public List<Task> findTaskByCategoryIdForCurrentUserRole(Long categoryId) {
//provide mock implementation 
}
} 

最新更新