Есть ли способ шпионить за параметрами, переданными объекту Mocked в Mockito

У меня есть сервис, над которым я издеваюсь, используя Mockito. Можно ли как-то проверить параметры, переданные в сервисный вызов?

Например:

У меня есть служба с именем employeeAnalyzer.calculateAnnualAppraisalForEmployee(Employee emp).

Итак, из модульного теста я хотел бы сделать что-то вроде

verifyThat ("John", emp.getName());
verifyThat ("Doe", emp.getLastName);

В основном я хочу следить за параметром, который был отправлен службе, которую я ввожу с помощью

@InjectMocks
EmployeeAnalyzer employeeAnalyzer;

Заранее спасибо.


person john.p.doe    schedule 05.10.2015    source источник


Ответы (1)


Определенно! Мокито классный. Вы можете использовать ArgumentCaptor для захвата параметра Employee и выполнения некоторых утверждений.

(пример взят из предыдущей ссылки)

ArgumentCaptor<Person> argument = ArgumentCaptor.forClass(Person.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());

Или новый необычный способ с использованием аннотации @Captor.

@Captor ArgumentCaptor<AsyncCallback<Foo>> captor;

@Before
public void init(){
   MockitoAnnotations.initMocks(this);
}

@Test public void shouldDoSomethingUseful() {
   //...
   verify(mock).doStuff(captor.capture());
   assertEquals("foo", captor.getValue());
}
person Augusto    schedule 05.10.2015