我想使用mock和junit测试void方法,但运行后测试将返回异常NoSuchElementException
这段代码
@Spy
InMemory inMemoryGet;
@InjectMocks
UserService userService;
@Test
public void deleteUser(){
User user=new User(2L,"abed","mohamed",26);
userService.deleteUser(2L);
verify(inMemoryGet,times(1)).deleteUser(2L);
}
InMemory
级
public void deleteUser(Long id) {
System.out.println("users = " + users.size());
users.remove(id,getById(id).get());
System.out.println("users.size() = " + users.size());
}
和UserService
类
public void deleteUser(Long id) {
inMemory.deleteUser(id);
}
测试用例的工作流程UserService
执行deleteId(id)
方法,然后在InMemory
类中调用deleteId(id)
,然后InMemory
完成进程
注意:在这个测试中,我没有数据库只是localdb关闭后应用程序将删除所有的数据
您已经在测试方法中创建了'user',而不是在InMemory类中。换句话说,创建的对象'user'不存在于InMemory bean的'users'列表中。因此,在执行deleteUser()期间,您将看到异常NoSuchElementException。您必须将此对象(User User =new User(2L,"abed" "mohamed",26))添加到"用户"列表中,然后尝试删除它。