君不见长松卧壑困风霜,时来屹立扶明堂。这篇文章主要讲述测试是否调用通过函数参数传递的函数(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)
推荐阅读
- Android(在JUnit中传递上下文并使用共享首选项)
- Android Studio出错
- Android上的函数图形库
- keyPress事件未在Android手机中触发
- url编码okhttp3 android删除%20
- 在create-react-app中调试es6
- 如何在Android上导出Highstock / Highcharts图表()
- Android Studio中未生成MainActivityBinding文件
- ClassNotFoundException(没有找到类“android.databinding.DataBinderMapper”)