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

时间:2015-04-03 01:07:04

标签: java scala mockito

我有一个带有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()
    }
  })

谢谢!

2 个答案:

答案 0 :(得分:2)

您似乎可以将null归为Void,例如

def foo: Void = null

因此,在您的示例中,您可以将Void.TYPE.newInstance()替换为nullnull: Void以更清晰。

答案 1 :(得分:-1)

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

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

然后,任何返回Unit的内容都可以在需要Void的地方使用,例如:

def foo: Void = println("")