如何在Scalamock中用manifest模拟多态函数?

如何在Scalamock中用manifest模拟多态函数?,scala,polymorphism,scalamock,Scala,Polymorphism,Scalamock,我试图模拟一个属于scala特征的多态函数。该方法用[T:Manifest]参数化 我应该说,最低限度的工作或失败示例如下: class ScalaMockTest extends FlatSpec with MockFactory { trait testObject { def parameterizedFunction[T: Manifest](a: T): T } it should "not fail with scalamock" in { val m

我试图模拟一个属于scala特征的多态函数。该方法用[T:Manifest]参数化

我应该说,最低限度的工作或失败示例如下:

class ScalaMockTest extends FlatSpec with MockFactory {

  trait testObject {
    def parameterizedFunction[T: Manifest](a: T): T
  }

  it should "not fail with scalamock" in {
    val mockObject = mock[testObject]

    (mockObject.parameterizedFunction[Int] _)
      .expects(*)
      .returns(3)

    mockObject.parameterizedFunction[Int](3)
  }
}
这将导致以下错误: org.scalamock.function.MockFunction2不能强制转换为org.scalamock.function.MockFunction1 当我删除并将函数定义更改为def parameterizedFunction[T]a:T:T而不使用:Manifest时,此错误不再发生


我怎样才能消除这个运行时错误,为什么会发生这种情况?不幸的是,仅仅删除清单是不可能的,因为我实际上试图模拟的代码中存在依赖项。

语法中的一些小调整应该可以使它工作:

class ScalaMockTest extends FlatSpec with Matchers with MockFactory {

  trait testObject {
    def parameterizedFunction[T: Manifest](a: T): T
  }

  "this" should "not fail with scalamock" in {
    val mockObject = mock[testObject]

    (mockObject.parameterizedFunction(_ : Int)(_ : Manifest[Int]))
      .expects(*, *)
      .returns(4)

    mockObject.parameterizedFunction[Int](3) shouldBe 4
  }
}

它包含在

中,我以前偶然发现了该链接,但我自己无法将其拼凑起来,谢谢!我不完全理解的是,为什么.expects现在是一个具有两个参数的函数。在匹配*,*的函数中,实际应该传递什么?