Чтобы проверить количество взаимодействий с макетом, где параметр в вызове метода является определенного типа, можно сделатьMockito проверить взаимодействие с ArgumentCaptor
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());
он говорит, что макет был вызван более чем один раз.
Есть ли способ выполнить эту проверку при захвате аргумента для дальнейшей проверки?
Это действительно не отвечает на вопрос OP, не так ли? – fge
@fge: Строго говоря, нет, это не так, но если бы мы только когда-либо отвечали точно на вопрос, который задавали, это было бы гораздо более скучным местом, и люди узнавали бы намного меньше. Я думаю, что это правильное решение общей проблемы, представленной, даже если фактический вопрос, как сформулировано, не запрашивал именно этого. –
Это самое элегантное решение, и я фактически использовал – Hilikus