首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Object ScalaTest的ScalaMock继承特征函数

Object ScalaTest的ScalaMock继承特征函数
EN

Stack Overflow用户
提问于 2016-11-10 00:13:19
回答 1查看 319关注 0票数 0

我正在尝试测试一个函数,但是我正在测试的函数调用了我想要存根的特征函数。我似乎不能使用ScalaMock来存根这个函数,因为我不能模拟这个对象。

代码语言:javascript
复制
trait[A<:CommonReturn] commonTrait[A] {
    def commonFunction(s:String):(String,String) = {
        ("Hello","World")
    }
    def testMe(s:String) : A
}

然后,通过许多对象扩展该特征,每个对象实现commonTrait并返回其特定的公共返回子类型。

代码语言:javascript
复制
object ob extends commonTrait[ConcreteType] {
    override def testMe(s:String){
        val(x,y) = commonFunction(s)
        val z = "unique logic"
        ConcreteType(x,y,z)
    }
}

因此,我现在正在尝试测试ob.testMe,但是我似乎不能模拟ob对象,因此不能存根commonFunction。

这是因为我的架构吗?或者,是否可以使用scalamock模拟对象并使用scalatest?

代码语言:javascript
复制
val mocked = mock[ob]
(mocked.commonFunction _).expect(*).returning("test","test")

这不能编译。

EN

回答 1

Stack Overflow用户

发布于 2017-03-24 20:28:55

您不能使用ScalaMock模拟对象,因为mockX是X的子类。Scala不允许对象的子类。

如果您需要使用此commonFunction测试协作,那么继承就会变得相当困难。我会考虑用依赖注入来设计它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40511417

复制
相关文章

相似问题

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