Java 在单元测试时,如何访问void方法中的对象?
我正在对Spring引导服务方法进行单元测试。我有一个没有参数的void方法。它查询数据库并获取一个列表。我可以嘲笑和断言这一点。然后它运行列表并根据某些条件更改对象字段。如何检查该列表的内容,以便对其进行断言Java 在单元测试时,如何访问void方法中的对象?,java,unit-testing,mockito,void,Java,Unit Testing,Mockito,Void,我正在对Spring引导服务方法进行单元测试。我有一个没有参数的void方法。它查询数据库并获取一个列表。我可以嘲笑和断言这一点。然后它运行列表并根据某些条件更改对象字段。如何检查该列表的内容,以便对其进行断言 @Transactional public void someMethod() { List<Person> myList = repository.findAllByAge(0); myList.forEach(person -> person.set
@Transactional
public void someMethod() {
List<Person> myList = repository.findAllByAge(0);
myList.forEach(person -> person.setAge(18));
}
@Transactional
公共方法(){
List myList=repository.findallbage(0);
myList.forEach(person->person.setAge(18));
}
我如何在myList上断言,以检查myList中年龄为0的每个人是否设置为18岁?我现在在我的测试课上有这个
@Test
public void someMethod_withSuccess() {
List<Person> testList = new ArrayList<>();
testList.add(toPersonEntity(createPersonDto().setAge(0)));
when(mockRepo.findAllByAge(0)).thenReturn(testList);
mockService.someMethod();
}
@测试
public void someMethod_with success(){
List testList=new ArrayList();
add(toPersonEntity(createPersonDto().setAge(0));
当(mockRepo.findallbage(0)),然后返回(testList);
mockService.someMethod();
}
您可以通过调用该方法
顺便说一句,如果你需要测试这个方法,它可能必须被重新分配为公共的或者根本不需要测试。就这么简单
testList.forEach(person -> assertThat("person "+testList.indexOf(person),person.getAge(),equalTo(28)));
你能分享一些代码吗?这样我们就可以更好地了解你拥有什么以及你正在尝试做什么?当你模仿这个方法时,你会传递你期望的结果列表。因此,在结果列表中声明您所期望的更改。使用ArgumentCaptor,您可以实现这一点,发布有助于回答问题的代码。