Как смоделировать приватную функцию в тесте Android с MockK? - PullRequest
0 голосов
/ 25 сентября 2018

Я не могу высмеивать частные функции в тестах Android.Я также использую полностью открытый плагин для предварительного тестирования.На не андроидных тестах работает без проблем.Я полагал, что это должно работать на андроиде также, потому что это отмечено на MockK-андроиде.Это не реализовано или я упускаю что-то очевидное?

androidTestImplementation "io.mockk:mockk-android:1.8.7"

@OpenForTesting
class A {
    fun publicFun() = privateFun()
    private fun privateFun() {}
    protected fun protectedFun() {}
}

@Test
fun privateFunctionMock() {
    val spy = spyk<A>()
    val mock = mockk<A>()
    val a = A()

    val functions = a::class.functions // size -> 6
    val spyFunctions = spy::class.functions // size -> 5
    val mockFunctions = mock::class.functions // size -> 5

    every { spy["privateFun"]() } returns Unit

    a.publicFun()
}

Сбой с исключением, потому что частная функция отсутствует. io.mockk.MockKException: не удается найти функцию privateFun () для динамического вызова

1 Ответ

0 голосов
/ 25 сентября 2018

Подклассы используются для создания насмешек и шпионов для тестов с предварительным тестированием на Android.Это означает, что в основном частные методы пропускаются, потому что их невозможно унаследовать.Таким образом, счетчики не учитывают частные методы.

...