调用服务后返回空列表Class 测试方法Class

Retuning Empty List After Call ServiceClass Method from Testing Class

调用 getStudentDetails() 后重新调整空列表 我已经编写了一个 Studentservice class 和一个 StudentRepo 接口,并希望使用带有 mockito 的 junit5 对服务 class 进行联合测试。

预期列表大小为 2 但 return 0。 请参考以下代码

学生服务Class

@Service
public class StudentService {

    @Autowired
    StudentRepo studentRepo;
    
    public List<Student> getStudentDetails(){
        
        List<Student> students = studentRepo.findAll();
        
        for(Student student : students) {
            student.setMarks(50);
        }
        return students;
    }
}

学生服务测试class

@WebMvcTest(StudentService.class)
public class StudentServiceTest {

    @MockBean
    StudentRepo studentRepoMock;
    
    @Mock
    StudentService studentServiceMock;
    
    
    @Test
    public void test() {
        
        
        when(studentRepoMock.findAll()).thenReturn(
                Arrays.asList(new Student(1,"abc"),
                (new Student(2,"def"))
                ));
        
        
        List<Student> student=studentServiceMock.getStudentDetails();  //return empty List
        
        
        verify(studentServiceMock, Mockito.times(1)).getStudentDetails(); /*it's working*/

        System.out.println(student.size());  
        
        //assertEquals(50,student.get(0).getMarks());
        //assertEquals(50,student.get(1).getMarks());
        
    }   
}
    

任何帮助将不胜感激

您已经模拟了存储库和服务。您永远不会以这种方式调用任何实际功能。如果你想测试 StudentService,你必须让 Spring 至少通过在 StudentService.

上用 @Autowired 替换 @Mock 来实例化它