如何使用 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() 替换为 nullnull: Void 以便更清楚。

您可以添加隐式 Unit -> Void 转换:

import scala.language.implicitConversions
implicit def unitToVoid(u: Unit): Void = null

然后任何 returns Unit 都可以用在需要 Void 的地方,例如:

def foo: Void = println("")