mockitoでScala 3のcontext functionをmockする方法

以下のように一旦structural type使ってreflection経由にする以外に思いついてないんですが、他の良い方法あります???

mockito以外のScala専用ライブラリなら対応してるものがあるかもしれないけど(詳細未調査)、素のmockitoだと、おそらくこうするしか・・・???

macroでstructural type自体を生成する、的な方法は取れる可能性はあるけど、結局structural typeになるはず・・・?

build.sbt

libraryDependencies ++= Seq(
  "org.mockito" % "mockito-core" % "5.20.0",
)

scalaVersion := "3.7.3"

Main.scala

package example

import org.mockito.ArgumentMatchers
import org.mockito.Mockito

trait Context

trait Foo {
  def withContext[A](function: Context ?=> A): A
}

object Main {
  def main(args: Array[String]): Unit = {
    test1()
    test2()
  }

  // これはダメ
  def test1(): Unit = {
    val foo = Mockito.mock(classOf[Foo])
    val context = Mockito.mock(classOf[Context])
    Mockito.when(foo.withContext(ArgumentMatchers.any())).thenAnswer(_.getArguments.head.asInstanceOf[Context => Any].apply(context))
    val res = foo.withContext{
      "aaa"
    }
    println(s"test1 = ${res}")
  }

  // これで動く
  def test2(): Unit = {
    import scala.reflect.Selectable.reflectiveSelectable
    val foo = Mockito.mock(classOf[Foo])
    val context = Mockito.mock(classOf[Context])
    val foo2 = foo.asInstanceOf[{
      def withContext(function: Context => Any): Any
    }]
    Mockito.when(foo2.withContext(ArgumentMatchers.any())).thenAnswer(_.getArguments.head.asInstanceOf[Context => Any].apply(context))
    val res = foo.withContext{
      "aaa"
    }
    println(s"test2 = ${res}")
  }
}