在的Mockito,是有可能捕获的先前值设置为传递给模拟对象的方法,例如一个物体的场下测试该方法执行此捕获之前的值,以验证模拟对象
public void methodUnderTest(){
Person person = new Person();
person.setAge(5);
someObject.setPerson(person);
...
person.setAge(6);
someObject.setPerson(person);
}
什么我想知道的是,如果我嘲笑someObject,我将能够验证someObject对单个对象“person”执行两次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