Начиная с Mockito 2.0 есть также возможность использовать статический метод Matchers.argThat (ArgumentMatcher) . С помощью Java 8 теперь стало намного чище и удобнее писать:
verify(mockBar).doSth(argThat((arg) -> arg.getSurname().equals("OneSurname")));
verify(mockBar).doSth(argThat((arg) -> arg.getSurname().equals("AnotherSurname")));
Если вы привязаны к более низкой версии Java, это также неплохо:
verify(mockBar).doSth(argThat(new ArgumentMatcher<Employee>() {
@Override
public boolean matches(Object emp) {
return ((Employee) emp).getSurname().equals("SomeSurname");
}
}));
Конечно, никто из них не может проверить порядок звонков - для этого вы должны использовать InOrder :
InOrder inOrder = inOrder(mockBar);
inOrder.verify(mockBar).doSth(argThat((arg) -> arg.getSurname().equals("FirstSurname")));
inOrder.verify(mockBar).doSth(argThat((arg) -> arg.getSurname().equals("SecondSurname")));
Пожалуйста, обратите внимание на проект mockito-java8 , который позволяет совершать такие звонки, как:
verify(mockBar).doSth(assertArg(arg -> assertThat(arg.getSurname()).isEqualTo("Surname")));