是否可以在真实函数调用中使用模拟函数?这两个功能都在同一对象中。因此,例如,如果我有
obj A {
def mockThis(value: Int): Int = {
value*5
}
def realFuncIWantToTest(value: Int): Int = {
val v = mockThis(value)
v
}
}
显然,这是一个非常简单的情况,这不是我的代码所做的(V实际上是一个复杂的对象)。本质上,我希望realfunciwanttotest使用我定义的模拟函数返回值。
谢谢!
you 可能可以使用Mockito的间谍来做到这一点;请参阅此处的示例。
基本上是通过让 spy 围绕着您的类测试的 real 对象来努力工作。
但这里有一个单词:即使有可能,也请考虑更改您的 Design 。这种"部分嘲笑"通常表明您的班级违反了单一责任原则。含义:班级应负责"一件"。但是,您可以/必须/必须部分模拟的想法表明您的班级至少负责两个,以某种方式断开连接。
从这个意义上讲:更好的方法是mockThis()
将是另一个对象的调用;可以通过依赖注入将其插入此类。
长话短说:至少在Java级别上,您的想法应该很好(我有些疑问,Mockito会从技术角度从您的 scala 对象都很好地工作;但是从概念点开始;您宁愿避免这样做。