无法模拟 Java 8 的可选类

ume*_*esh 3 java mockito powermock

我无法模拟 Option 类。

我的伪代码是:

PowerMockito.when(stream.findAny()).thenReturn("Mock Of Optional class");
Run Code Online (Sandbox Code Playgroud)

但是每次运行此代码时 - 我都会收到Optional.empty.

我使用的是 1.5 版本的 PowerMock

Dav*_*son 13

不需要模拟像Future和这样的原始类Optional。只需将要返回的模拟数据包装在 real 中Optional

MyData myData = Mockito.mock(MyData.class)
when(repository.getData()).thenReturn(Optional.of(myData));
Run Code Online (Sandbox Code Playgroud)

对于嘲笑缺席:

when(repository.getData()).thenReturn(Optional.<MyData>empty());
Run Code Online (Sandbox Code Playgroud)


Nit*_*hal 2

你不能在mockito版本1中模拟最终类,而Optional是最终类。

public final class Optional<T> {
Run Code Online (Sandbox Code Playgroud)

在mockito版本2中你可以做到这一点。