如何使用Mockito在Scala中模拟Void返回类型



我有一个带有Java依赖项的scala项目。我想在对返回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

然后,任何返回Unit的东西都可以在期望Void的地方使用,例如:

def foo: Void = println("")

相关内容

  • 没有找到相关文章

最新更新