В проекте есть интерфейс Paginator Джун реализовал его и заиспользовал в своей ViewMode, но проблема в том, что при запуске функции main ничего не проиходит. Помоги ему понять в чем проблема
package com.example.test
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
/// Core
interface Paginator<T> {
fun page(): Flow<List<T>>
suspend fun nextPage()
}
/// Junior code
interface DataPaginator: Paginator<String>
class DataPaginatorImpl : DataPaginator {
private val flow = MutableSharedFlow<List<String>>()
override fun page(): Flow<List<String>> = flow.asSharedFlow()
override suspend fun nextPage() {
// some long IO operation
delay(1000)
flow.emit(listOf("data"))
}
}
class ViewModel(
private val dataPaginator: DataPaginator,
private val coroutineScope: CoroutineScope,
) {
fun onResume() {
coroutineScope.launch { init() }
}
private suspend fun init() {
dataPaginator.page().collect(::renderUI)
dataPaginator.nextPage()
}
private fun renderUI(data: List<String>) = data.forEach(::println)
}
/// Test
fun main() = runBlocking {
val viewModel = ViewModel(DataPaginatorImpl(), this)
viewModel.onResume()
}
Сломается ли твое решение в Unit тестах, а если сломается, то как будешь исправлять?