如何在Scala中使用深层嵌套的匿名函数对闭包进行单元测试?

时间:2015-06-18 22:48:47

标签: scala scalatest

我试图对一个看起来像这样的方法进行单元测试:

def foo() = {
  val a = Listener.registerCallback(
    (bar: Bar, baz: Baz) => {
      val x = bar.declare().get
      bar.bind(x)
  })
  return a
}

我可以轻松测试此方法的结果。然而,我的问题是,当我运行一个覆盖率报告(使用sbt-coverage插件和ScalaTest)时,由于使用具有本地值的无法访问的匿名函数的方法,我只能达到我的覆盖阈值。

有没有办法可以测试这个嵌套的匿名函数来提高我的覆盖率?

1 个答案:

答案 0 :(得分:3)

也许拔出你测试的方法,然后让eta扩展将方法变成一个函数?类似的东西:

def bippy(bar: Bar, baz: Baz) = {
  val x = bar.declare().get
  bar.bind(x)
}

def foo() = {
  val a = Listener.registerCallback(bippy)
  return a
}

即,现在你可以针对bippy编写单元测试,并希望通过sbt-coverage得分。