测试是否调用通过函数参数传递的函数(Android / Kotlin))

君不见长松卧壑困风霜,时来屹立扶明堂。这篇文章主要讲述测试是否调用通过函数参数传递的函数(Android / Kotlin))相关的知识,希望能为你提供帮助。
有没有办法检查通过另一个函数的参数传递的函数是否被调用?例如,

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中打印。
【测试是否调用通过函数参数传递的函数(Android / Kotlin))】但要做到这一点,你必须接受showEmptyError中的value参数。所以原型应该是showEmptyError(value:Editable)

    推荐阅读