如何在 Scalamok 中使用清单模拟多态函数?



我试图模拟属于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 cannot be cast to org.scalamock.function.MockFunction1当我删除将函数定义更改为def parameterizedFunction[T](a: T): T(没有:Manifest(时,此错误不再发生。

如何摆脱此运行时错误,为什么会发生这种情况?不幸的是,由于我实际上试图模拟的代码中的依赖项,简单地删除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
}
}

用户指南中对此进行了介绍

相关内容

  • 没有找到相关文章

最新更新