Наблюдайте за выбросами StateFlow при инициализации ViewModelAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Наблюдайте за выбросами StateFlow при инициализации ViewModel

Сообщение Anonymous »

У меня есть модель представления, которая принимает исходный объект ViewState и имеет общедоступную переменную состояния, которую можно собирать.

Код: Выделить всё

class MyViewModel(initialState: ViewState) : ViewModel() {
val state: StateFlow = MutableStateFlow(initialState)
val errorFlow: SharedFlow = MutableSharedFlow()

init {
performNetworkCall()
}

private fun performNetworkCall() = viewModelScope.launch {
Network.makeCall(
"/someEndpoint",
onSuccess = {
(state as MutableStateFlow).tryEmit()
},
onError = {
(errorFlow as MutableSharedFlow).tryEmit("network failure")
}
)
}
}
При наблюдении этого состояния из фрагмента я вижу исходное состояние (например, загрузка) и собираю изменения при успешном завершении сетевого вызова (например, до загруженного состояния. )
Однако я не понимаю, как наблюдать за этим выбросом из моего ViewModelUnitTest.
Я использую турбину Kotlin для проверки выбросов для моего состояния и общего доступа потоков, но я могу наблюдать только выбросы, которые происходят после того, как я вызовите viewModel.state.test или viewModel.errorFlow.test.
Поскольку я не могу ссылаться на viewModel.state или viewModel.errorFlow перед инициализацией ViewModel, как я могу написать тест для проверки того, что моя логика инициализации работает правильно и выдает ожидаемый результат на основе имитируемого поведения Network.makeCall - будь то новая эмиссия состояния< /код> или выброс errorFlow?

Подробнее здесь: https://stackoverflow.com/questions/692 ... ialization
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»