1. ホーム
  2. java

[解決済み] Mockitoは複数回呼び出されたメソッドの引数をキャプチャできますか?

2022-03-19 23:35:37

質問

2回呼び出されるメソッドがあり、2回目のメソッド呼び出しの引数をキャプチャしたいのです。

以下は、私が試したことです。

ArgumentCaptor<Foo> firstFooCaptor = ArgumentCaptor.forClass(Foo.class);
ArgumentCaptor<Foo> secondFooCaptor = ArgumentCaptor.forClass(Foo.class);
verify(mockBar).doSomething(firstFooCaptor.capture());
verify(mockBar).doSomething(secondFooCaptor.capture());
// then do some assertions on secondFooCaptor.getValue()

しかし、私は TooManyActualInvocations Mockito は doSomething は一度だけ呼び出される必要があります。

の2回目の呼び出しの引数を確認するにはどうすればよいですか? doSomething ?

解決方法は?

私は、次のように思います。

verify(mockBar, times(2)).doSomething(...)

サンプル モッキート・ジャバドック :

ArgumentCaptor<Person> peopleCaptor = ArgumentCaptor.forClass(Person.class);
verify(mock, times(2)).doSomething(peopleCaptor.capture());

List<Person> capturedPeople = peopleCaptor.getAllValues();
assertEquals("John", capturedPeople.get(0).getName());
assertEquals("Jane", capturedPeople.get(1).getName());