Kotlin asyn c обратный вызов - PullRequest
       7

Kotlin asyn c обратный вызов

0 голосов
/ 11 февраля 2020

У меня есть класс:

class SomeClass(private val executor: Executor) {
        fun doSomething(id: Int, callback: (String, Int) -> Unit) {
            executor.execute {
                val intValue = id + 1
                val stringValue = "Some string result"
                callback(stringValue, intValue)
            }
        }
    } 

Как создать модульный тест для метода doSomething?

1 Ответ

0 голосов
/ 11 февраля 2020

Я исследовал этот вопрос около 3 дней. Я надеялся, что это можно решить с помощью Mockito. К счастью, сегодня я нашел ConcurrentUnit утилиты для тестирования асин c кода.

Мое решение:

val executor = Executors.newSingleThreadExecutor()
lateinit var someClass = SomeClass(executor)

@Test
fun test() {
    val waiter = Waiter()
    someClass.doSomething(1) { string, int ->
        waiter.assertNotNull(string)
        waiter.assertEquals(int, 2)
        waiter.resume()
    }
    waiter.await(100, TimeUnit.MILLISECONDS)
}

Спасибо всем за помощь!

...