ScalaMock,基于 ClassTag 返回



如何在实现中使用ClassTag的方法存根?

class RefsFactory {
def get[I <: Item : ClassTag]: RefTo[I] = {
val itemType = implicitly[ClassTag[A]].runtimeClass.asInstanceOf[Class[A]]
// ...
}
}

这个类在我们的代码中被大量使用,我想存根它以返回其他人关于itemType的模拟。

val factory = stub[RefsFactory]
val otherType = stub[RefTo[OtherType]]
(factory.get[OneType]) returns RefTo(new OneType())
(factory.get[OtherType]) returns otherType

谢谢

试图简化你的问题,方法

def get[I <: Item : ClassTag]: RefTo[I]

类似于将上下文绑定在 0-arity 方法上

def foo[I: ClassTag]

这等效于具有一个隐式参数的方法

def foo[I](implicit ev: ClassTag[I)

因此考虑 带有隐式参数的方法,我们可以像这样模拟

(myMock.foo[SomeType](_: ClassTag[SomeType])).expects(*).returns(...)

相关内容

  • 没有找到相关文章

最新更新