Проверка, вызывают ли функции, переданные через параметры функции (Android / Kotlin)) - PullRequest
0 голосов
/ 23 мая 2018

Есть ли способ проверить, вызывается ли функция, переданная через параметр другой функции?Например,

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 ]

0 голосов
/ 23 мая 2018

Вы можете макетировать лямбда-функции 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)
    }
}
0 голосов
/ 23 мая 2018

Вы можете просто записать значение с другим тегом, как для showEmptyError метода, который вы можете записать

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

так же, как и другой метод, использовать другой тег, первый параметр которого в Log.d и ваш результат будет напечатан вLogcat.

Но для этого вам нужно принять параметр value в showEmptyError.Таким образом, прототип должен быть showEmptyError(value:Editable)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...