有没有办法检查通过另一个函数的参数传递的函数是否被调用?例如,
override fun updateWeight(value: Editable,
showEmptyError: () -> Unit,
showOutOfRangeError: () -> Unit,
dismissAlertDialog: () -> Unit,
updateAndShow: (Float) -> Unit) {
if (value.toString().trim().isEmpty()) {
showEmptyError()
} else {
val floatVal = value.toString().trim().toFloat()
if (floatVal > 300) {
showOutOfRangeError()
} else {
dismissAlertDialog()
updateAndShow(floatVal)
}
}
}
我需要使用value
参数的不同值测试上面的方法,并检查哪个方法正在执行?我试着寻找答案,但我找不到合适的解决方案。
你可以模拟lambda函数usins Mockito
。例如showEmptyError
测试:
@RunWith(MockitoJUnitRunner::class)
class TestUpdateWeight {
@Mock
lateinit var showEmptyError: () -> Unit
@Mock
lateinit var showOutOfRangeError: () -> Unit
@Mock
lateinit var dismissAlertDialog: () -> Unit
@Mock
lateinit var updateAndShow: (Float) -> Unit
@Test
fun testShowEmptyErorr() {
updateWeight("", showEmptyError, showOutOfRangeError, dismissAlertDialog, updateAndShow)
verify(showEmptyError).invoke()
verifyNoMoreInteractions(showOutOfRangeError)
verifyNoMoreInteractions(dismissAlertDialog)
verifyNoMoreInteractions(updateAndShow)
}
}
您可以使用不同的标记记录值,例如您可以记录的showEmptyError
方法
Log.d("showEmptyError value",value.toString()) // inside your showEmptyError() method
与不同的方法相同使用不同的标签,Log.d
中的第一个参数和你的结果将在Logcat中打印。
但要做到这一点,你必须接受showEmptyError中的value参数。所以原型应该是showEmptyError(value:Editable)