使用scalamock部分模拟类
我正在测试一个类使用scalamock部分模拟类,scala,scalamock,Scala,Scalamock,我正在测试一个类Cls,它有两个函数:a和BA加载DataFrame并B调用A,然后执行一些操作并返回一个新的DataFrame。举例来说: Cls类{ def A(虚拟:Int):Int=5 def B():Int=A(7)+1 } 使用Scalamock如何编写我的测试代码 我试过: 测试(“测试用例”){ val f=存根[Cls] f、 A uu当7返回5时 断言(f.B()==6) } 我希望测试成功通过,我得到的0不等于6(mytestcase.scala:24)(我知道scal
Cls
,它有两个函数:a
和B
A
加载DataFrame
并B
调用A
,然后执行一些操作并返回一个新的DataFrame
。举例来说:
Cls类{
def A(虚拟:Int):Int=5
def B():Int=A(7)+1
}
使用Scalamock
如何编写我的测试代码
我试过:
测试(“测试用例”){
val f=存根[Cls]
f、 A uu当7返回5时
断言(f.B()==6)
}
我希望测试成功通过,我得到的0不等于6(mytestcase.scala:24)
(我知道scalamock用mock替换了所有现有函数,但这不是预期的行为)
编辑:
我在mockito中找到了这个引用,但我不确定scalamock是否支持这种模拟,以及为什么建议不要这样做。scalamock不重写/stub final方法。因此,您的解决方案可以是创建一个子类,并将部分方法标记为final:
import org.scalamock.scalatest.MockFactory
import org.scalatest.FunSuite
class PartialMockingTest extends FunSuite with MockFactory {
test("test case") {
class PartFinalCls extends Cls {
override final def B(): Int = super.B()
}
val f = stub[PartFinalCls]
f.A _ when 7 returns 5
assert(f.B() == 6)
}
}
class Cls {
def A(dummy: Int): Int = 5
def B(): Int = A(7) + 1
}
非常有趣的想法。我想知道是否有一种方法不涉及创建新类对不起,没有。我将ScalaMock作为一个项目进行维护,这是目前我唯一可以推荐的方法。