首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ScalaMock,基于ClassTag返回

ScalaMock,基于ClassTag返回
EN

Stack Overflow用户
提问于 2019-10-04 19:41:36
回答 1查看 61关注 0票数 1

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

代码语言:javascript
复制
class RefsFactory {
  def get[I <: Item : ClassTag]: RefTo[I] = {
    val itemType = implicitly[ClassTag[A]].runtimeClass.asInstanceOf[Class[A]]
    // ...
  }
}

这个类在我们的代码中用得很多,我想将它存根,以返回其他关于itemType的mock。

代码语言:javascript
复制
val factory = stub[RefsFactory]
val otherType = stub[RefTo[OtherType]]
(factory.get[OneType]) returns RefTo(new OneType())
(factory.get[OtherType]) returns otherType

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-04 20:32:43

试着简化你的问题,方法

代码语言:javascript
复制
def get[I <: Item : ClassTag]: RefTo[I]

类似于在0度方法上设置上下文边界。

代码语言:javascript
复制
def foo[I: ClassTag]

它等同于具有一个隐式参数的方法

代码语言:javascript
复制
def foo[I](implicit ev: ClassTag[I)

因此,考虑到Methods with implicit parameters,我们可以这样模拟

代码语言:javascript
复制
(myMock.foo[SomeType](_: ClassTag[SomeType])).expects(*).returns(...)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58235746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档