问题描述
对于 Mockito 和其他测试框架,通常有多种方法可以模拟测试类中方法的功能。我似乎无法让 ScalaMock 以同样的方式接受。
class A {
def methodUndertest()
def methodUsedInMethodUndertest()
}
然后在测试课上我:
(A.methodUsedInMethodUnderTest _)
.expects.....
a.methodUnderTest shouldEqual ..
我知道,如果您模拟/删除类,然后在真实实例上调用相同的功能,这将不起作用。但是可以通过对两个调用等使用模拟来解决。
如果这是错误的方法,那么测试在同一测试类中使用其他方法的方法的最佳方法是什么?我认为将方法解耦是最佳实践。
谢谢!
解决方法
如果我正确理解您的问题,您可以创建 A
的模拟,然后告诉 ScalaMock 执行 methodUnderTest
的实际实现。
val aMock = mock[A]
when(aMock.methodUnderTest).thenCallRealMethod()
when(aMock.methodUsedInMethodUnderTest).thenReturn(someValue)
aMock.methodUnderTest shouldEqual someOtherValue