Я пытаюсь смоделировать метод toURI()
из класса FileObject.java
(этот класс принадлежит пакету org.openide.filesystems
).
Объявление метода выглядит так:
public final URI toURI() {
// Compiled code
}
Пока у меня есть этот тестовый код:
@Test
public void test() throws Exception {
String myUrl = "http://stackoverflow.com";
URI myURI = new URI(myUrl);
FileObject mocked = Mockito.mock(FileObject.class);
Mockito.when(mocked.toURI()).thenReturn(myURI);
assertEquals(myURI, mocked.toURI());
}
Однако, когда я запускаю тест, он вылетает в строке Mockito.when(mocked.toURI()).thenReturn(myURI);
со следующей ошибкой:
Testcase: test (myapp.logicLayer.LogicTest): FAILED Файловый объект Mock
для FileObject hashCode: 443290224 возвращает значение null из getFileSystem ()
junit.framework.AssertionFailedError: объект файла Mock для FileObject,
hashCode: 443290224 возвращает значение null из getFileSystem ()
Я пробовал несколько обходных путей, но не мог найти способ, который сработал.
Я даже пытался использовать PowerMockito.stub(PowerMockito.method(FileObject.class, "toURI")).toReturn(myURI);
, но я получаю ту же ошибку, не говоря уже о том, что это следует использовать в статических методах, а это не так.
Я использую Mockito 1.10.19. Я гуглил и смог увидеть, что только 2-я версия Mockito способна издеваться над финальными методами. Я думаю, что это может быть проблемой, но я действительно не уверен.
Редактировать: только что протестировано с Mockito 2.8.9, и проблема сохраняется.
Кто-нибудь знает, что здесь не так?