【问题标题】:How can I mock a Void return type in Scala with Mockito?如何使用 Mockito 在 Scala 中模拟 Void 返回类型?
【发布时间】:2015-04-03 14:05:02
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: java scala mockito


    【解决方案1】:

    看来您可以将null 称为Void,例如

    def foo: Void = null
    

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

    【讨论】:

      【解决方案2】:

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

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

      那么任何返回Unit 的东西都可以用在需要Void 的地方,例如:

      def foo: Void = println("")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-15
        • 1970-01-01
        • 2011-01-17
        相关资源
        最近更新 更多