mockitoでは、モックオブジェクトのメソッドに渡されたオブジェクトのフィールドに設定された以前の値をキャプチャすることは可能ですか?たとえば、テスト中のメソッドはこれを実行します
public void methodUnderTest(){
Person person = new Person();
person.setAge(5);
someObject.setPerson(person);
...
person.setAge(6);
someObject.setPerson(person);
}
私が知りたかったのは、someObject をモックした場合、someObject が単一のオブジェクト「person」に対して setPerson を 2 回実行したが、setPerson が発生したときにオブジェクトの age の値が異なることを確認できるかどうかです。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