Mockito, фиктивный класс и метод реального вызова void - PullRequest
0 голосов
/ 09 ноября 2018

, как следует из названия, проблема в следующем: у меня есть макет AdesioneMerger, и я должен вызвать реальный метод merge. merge является пустым методом.

Это неправильно:

adesioneMerger = Mockito.spy(AdesioneMerger.class);

Mockito.when(adesioneMerger.merge(
    Matchers.any(AdesioneBean.class),
    Matchers.any(Adesione.class), 
    Matchers.any(ServiceResultBean.class))
).ThenCallRealMethod();

в чем ошибка?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

попробуйте так:

doCallRealMethod().when(adesioneMerger).merge(
    Matchers.any(AdesioneBean.class),
    Matchers.any(Adesione.class), 
    Matchers.any(ServiceResultBean.class);
0 голосов
/ 09 ноября 2018

Для пустых методов используйте альтернативный API:

Mockito.doCallRealMethod()
  .when(adesioneMerger).merge(
     Matchers.any(AdesioneBean.class),
     Matchers.any(Adesione.class), 
     Matchers.any(ServiceResultBean.class));

Проблема в том, что Mockito.when() требует аргумент (а в Java нет аргументов с пустым типом). Альтернативный API обходит это, вызывая when() для типа mock, а фактический метод для mock вызывается для возвращаемого значения when(...).

См. Также этот ответ: Как создать метод mock to void с помощью mockito

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...