При попытке перехватить параметр ArrayList с помощью ArgumentCaptor получающийся объект всегда будет пустым списком.
Я использую аннотацию @Captor для создания моего ArgumentCaptor, но он по-прежнему приводит к возвращению пустого списка.
@RunWith(MockitoJUnitRunner.class)
public class Test{
@Mock
private Service service;
@Captor
private ArgumentCaptor<ArrayList<SomeType>> secondCaptor;
@Before
public void init(){
MockitoAnnotations.initMocks(this);
}
@Test
public void shouldDoStuffWithListValues(){
ArgumentCaptor<SomeType> captor = ArgumentCaptor.forClass(SomeType.class);
//...
verify(service).doStuff(captor.capture(), secondCaptor.capture()));
SomeType type = captor.getValue();
List<SomeType> someTypeList = secondCaptor.getValue();
//this assert is fine
Assert.assertTrue(type != null);
//whereas; this assert always fails, despite the call containing a value
Assert.assertTrue(someTypeList.size()>0);
}
}