如何使用 Mockito 在 Scala 中模拟 Void return 类型?
How can I mock a Void return type in Scala with Mockito?
我有一个具有 Java 依赖项的 Scala 项目。我想在调用 returns Void 的 java 方法时执行一些代码(具体来说,我想在调用此方法时完成未来)。有什么办法吗?以下编译但在运行时抛出异常:
val startLF = SettableFuture.create[Unit]()
when(mockConsumer.start).thenAnswer(new Answer[Void]() {
override def answer(invocationOnMock: InvocationOnMock): Void = {
startLF.set()
Void.TYPE.newInstance()
}
})
谢谢!
好像可以把null
写成Void
,例如
def foo: Void = null
因此在您的示例中,您可以将 Void.TYPE.newInstance()
替换为 null
或 null: Void
以便更清楚。
您可以添加隐式 Unit -> Void
转换:
import scala.language.implicitConversions
implicit def unitToVoid(u: Unit): Void = null
然后任何 returns Unit
都可以用在需要 Void
的地方,例如:
def foo: Void = println("")
我有一个具有 Java 依赖项的 Scala 项目。我想在调用 returns Void 的 java 方法时执行一些代码(具体来说,我想在调用此方法时完成未来)。有什么办法吗?以下编译但在运行时抛出异常:
val startLF = SettableFuture.create[Unit]()
when(mockConsumer.start).thenAnswer(new Answer[Void]() {
override def answer(invocationOnMock: InvocationOnMock): Void = {
startLF.set()
Void.TYPE.newInstance()
}
})
谢谢!
好像可以把null
写成Void
,例如
def foo: Void = null
因此在您的示例中,您可以将 Void.TYPE.newInstance()
替换为 null
或 null: Void
以便更清楚。
您可以添加隐式 Unit -> Void
转换:
import scala.language.implicitConversions
implicit def unitToVoid(u: Unit): Void = null
然后任何 returns Unit
都可以用在需要 Void
的地方,例如:
def foo: Void = println("")