我正在尝试测试一个函数,但是我正在测试的函数调用了我想要存根的特征函数。我似乎不能使用ScalaMock来存根这个函数,因为我不能模拟这个对象。
trait[A<:CommonReturn] commonTrait[A] {
def commonFunction(s:String):(String,String) = {
("Hello","World")
}
def testMe(s:String) : A
}然后,通过许多对象扩展该特征,每个对象实现commonTrait并返回其特定的公共返回子类型。
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?
val mocked = mock[ob]
(mocked.commonFunction _).expect(*).returning("test","test")这不能编译。
发布于 2017-03-24 20:28:55
您不能使用ScalaMock模拟对象,因为mockX是X的子类。Scala不允许对象的子类。
如果您需要使用此commonFunction测试协作,那么继承就会变得相当困难。我会考虑用依赖注入来设计它。
https://stackoverflow.com/questions/40511417
复制相似问题