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

如何在Scala中使用深度嵌套的匿名函数对闭包进行单元测试?,scala,scalatest,Scala,Scalatest,我正在尝试对一个方法进行单元测试,该方法如下所示: def foo() = { val a = Listener.registerCallback( (bar: Bar, baz: Baz) => { val x = bar.declare().get bar.bind(x) }) return a } 我可以很容易地测试这个方法的结果。然而,我的问题是,当我运行一个覆盖率报告(使用sbt覆盖率插件和ScalaTest)时,由于方法持有本地值不

我正在尝试对一个方法进行单元测试,该方法如下所示:

def foo() = {
  val a = Listener.registerCallback(
    (bar: Bar, baz: Baz) => {
      val x = bar.declare().get
      bar.bind(x)
  })
  return a
}
我可以很容易地测试这个方法的结果。然而,我的问题是,当我运行一个覆盖率报告(使用sbt覆盖率插件和ScalaTest)时,由于方法持有本地值不可访问的匿名函数,所以我只差一点达到覆盖率阈值


有什么方法可以测试这个嵌套的匿名函数来提高我的覆盖率得分吗?

也许可以将其拉出到一个您测试的方法中,然后让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覆盖率获得分数。

也许可以将其拉出到您测试的方法中,然后让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覆盖率获得分数。

也许可以将其拉出到您测试的方法中,然后让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覆盖率获得分数。

也许可以将其拉出到您测试的方法中,然后让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覆盖率得分