是否可以在真实函数调用中使用模拟函数?两个函数都在同一个对象中。所以,例如,如果我有
obj A {
def mockThis(value: Int): Int = {
value*5
}
def realFuncIWantToTest(value: Int): Int = {
val v = mockThis(value)
v
}
}
显然这是一个非常简单的案例,这不是我的代码所做的事情(v实际上是一个复杂的对象)。基本上我希望realFuncIWantToTest使用我定义的模拟函数返回值。
谢谢!
答案 0 :(得分:2)
你可能能够使用Mockito的间谍来做到这一点;有关此示例,请参阅here。
间谍基本上是通过让间谍围绕你所测试的类的真实对象来实现的。
但有一句话:即使有可能,也请考虑更改设计。这种“部分嘲弄”通常表明您的班级违反了单一责任原则。含义:一个班级应该负责“一个”的事情。但是你可以/必须部分模拟你的类中的东西的想法表明你的班级至少负责两个,不知何故断开方面。
从这个意义上讲,更好的方法是mockThis()
是对另一个对象的调用;可以通过依赖注入插入到此类中。
长话短说:至少在Java级别上,从技术角度来看,你的想法应该可以正常工作(我怀疑Mockito会很好地使用你的 scala 对象);但从概念的角度来看;你应该避免这样做。