Предположим, у меня есть следующий интерфейс:Можно ли вызвать стандартные реализации интерфейсов с помощью doCallRealMethod Mockito?
public interface ISomething {
default int doStuff() {
return 2 * getValue();
}
int getValue();
}
Когда я теперь высмеивать этот интерфейс, как это:
@Mock
private ISomething _something;
@Before
public void setup() {
doCallRealMethod().when(_something).doStuff();
}
и попытаться проверить DoStuff() метод, как следующее:
@Test
public void testDoStuff() {
when(_something.getValue()).thenReturn(42);
assertThat("doStuff() returns 84", _something.doStuff(), is(84));
}
Я ожидаю, что тест будет успешным, но я получаю:
org.mockito.exceptions.base.MockitoException:
Cannot call real method on java interface. Interface does not have any implementation!
Calling real methods is only possible when mocking concrete classes.
Я попытался подклассов ISomething
с абстрактным классом, как это:
public abstract class Something implements ISomething {
}
и издеваться этот класс, как и выше. При таком подходе я получаю то же самое.
Не поддерживает ли Mockito вызовы по умолчанию?