首页 > 解决方案 > 是否可以使用 ScalaMock 模拟/存根方法?

问题描述

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

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

然后在测试课上我是:

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

我知道,如果你在模拟/存根类,然后在真实实例上调用相同的功能,这将不起作用。但是有通过对两个调用等使用模拟来解决的方法。

如果这是错误的方法,那么在同一测试类中测试使用其他方法的方法的最佳方法是什么?我认为将方法解耦是最佳实践。

谢谢!

标签: scalaunit-testingscalamock

解决方案


如果我正确理解您的问题,您可以创建一个模拟,A然后告诉 ScalaMock 执行methodUnderTest.

val aMock = mock[A]

when(aMock.methodUnderTest).thenCallRealMethod()
when(aMock.methodUsedInMethodUnderTest).thenReturn(someValue)

aMock.methodUnderTest shouldEqual someOtherValue

推荐阅读