我有一个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
}
}