Чтобы проверить количество взаимодействий с макетом, где параметр в вызове метода имеет определенный тип, можно сделать
mock.someMethod(new FirstClass());
mock.someMethod(new OtherClass());
verify(mock, times(1)).someMethod(isA(FirstClass.class));
Это произойдет благодаря вызову isA
, поскольку someMethod
вызывается дважды, но только один раз с аргументом FirstClass
Однако этот шаблон кажется невозможным при использовании ArgumentCaptor, даже если Captor был создан для конкретного аргумента FirstClass
это не работает
mock.someMethod(new FirstClass());
mock.someMethod(new OtherClass());
ArgumentCaptor<FirstClass> captor = ArgumentCaptor.forClass(FirstClass.class);
verify(mock, times(1)).someMethod(captor.capture());
он говорит, что макет вызывался более одного раза.
Есть ли способ выполнить эту проверку при захвате аргумента для дальнейшей проверки?