是否可以使用ScalaMock模拟/存根相同测试类的方法



对于Mockito和其他测试框架,通常有一些方法可以模拟测试类中方法的功能。我似乎无法让ScalaMock接受同样的方式。

class A {
def methodUnderTest()
def methodUsedInMethodUnderTest()
}

然后在测试课上,我是:

(A.methodUsedInMethodUnderTest _)
.expects.....
a.methodUnderTest shouldEqual ..

我知道,如果你嘲笑/剔除类,然后在一个真实的实例上调用相同的功能,这是行不通的。但也有一些变通办法,通过对两个调用等使用mock。

如果这是错误的方法,那么测试在同一测试类中使用其他方法的方法的最佳方法是什么?我认为将这些方法脱钩是最好的做法。

谢谢!

如果我正确理解您的问题,您可以创建A的mock,然后告诉ScalaMock执行methodUnderTest的实际实现。

val aMock = mock[A]
when(aMock.methodUnderTest).thenCallRealMethod()
when(aMock.methodUsedInMethodUnderTest).thenReturn(someValue)
aMock.methodUnderTest shouldEqual someOtherValue

最新更新