代码之家  ›  专栏  ›  技术社区  ›  kokilayaa

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

  •  -1
  • kokilayaa  · 技术社区  · 7 年前

    是否有任何方法可以检查通过另一个函数的参数传递的函数是否被调用?例如,

    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 参数并检查正在执行的方法?我试图寻找答案,但找不到合适的解决方案。

    2 回复  |  直到 7 年前
        1
  •  1
  •   mol    7 年前

    您可以使用模拟lambda函数 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)
        }
    }
    
        2
  •  0
  •   Suraj Vaishnav    7 年前

    您可以只记录带有不同标记的值 喜欢 showEmptyError 可以记录的方法

    Log.d("showEmptyError value",value.toString()) // inside your showEmptyError() method
    

    和不同的方法一样,使用不同的标签 Log.d 您的结果将打印在logcat中。

    但要做到这一点,您必须在showEmptyError中接受value参数。所以原型应该是 showEmptyError(value:Editable)