我有一个函数X,函数使用函数Y.当我测试X时,我应该模拟Y来返回我想要的值,或者我应该让它调用真实方法并让它计算值。
fun X_test(){
Mockito.when(Y).thenReturn("value")
...
}
OR
fun X_test(){
Mockito.when(Y).thenCallRealMethod()
...
}
答案 0 :(得分:2)
您正在测试X产生的逻辑。因此,你不关心Y实际在做什么,而是想要传递你的价值观#34;确保X的输出正确。
采用这个非常基本的例子:
fun Y(): Int {
return System.currentTimeMillis()
}
fun X(): Boolean {
val time = Y()
return (time % 2 == 0)
}
您要测试的是,如果时间是偶数毫秒,X()
实际返回true
。所以你要模仿Y()
来回归"轻松"值,如0,1,2,3等。您确保在Y()
返回1
时,X()
返回false
。但是当Y()
被模拟返回2
时,X()
会返回true
。
因此,要回答您的问题,请使用
Mockito.when(Y).thenReturn(1)
并确保X()
返回false