在 mockito 中,是否可以捕获先前设置为传递给模拟对象方法的对象字段的值,例如被测方法执行此操作
public void methodUnderTest(){
Person person = new Person();
person.setAge(5);
someObject.setPerson(person);
...
person.setAge(6);
someObject.setPerson(person);
}
我想知道的是,如果我模拟 someObject,我是否能够验证 someObject 对单个对象“人”执行了两次 setPerson,但是当 setPerson 发生时该对象的年龄值不同?我尝试使用 ArgumentCaptor,但由于我传递了同一个对象,所以我只能得到最后一个年龄。
ArgumentCaptor<Integer> arg = ArgumentCaptor.forClass(Integer.class);
verify(mockObject).setPerson(arg.capture());
List<Integer> captureList = arg.getAllValues();
captureList.get(0).getAge(); // returns 6
captureList.get(1).getAge(); // returns 6
我也试过做
InOrder in = inOrder(mockObject);
in.verify(mockObject).setPerson(arg.capture());
assertEquals(5, arg.getValue().getAge()); //fails