I have BaseViewModel with logic that goes something like this:
val baseViewState = MutableViewState(State.Inital)
init {
viewModelScope.launch {
val data = getData()
onDataGot()
baseViewState.update {State.Second}
}
}
and then in child:
val childViewState = MutableViewState(ChildState.Inital)
override fun onDataGot() {
childViewState.update { ChildState.Second}
}
Im am trying to test this like this:
val viewModel = ChildViewModel()
viewModel.childViewState.test
val firstItem = awaitItem() // is ChildState.Inital
val secondItem = awaitItem() // is ChildState.Second
viewModel.baseViewState.test {
val firstItem = awaitItem() // is be State.Inital
val secondItem = awaitItem() // will time out with: No value produced in 1s
}
Can somebody explan it to me why this would happend? should there also be more events on baseViewState since we are emiting in init ?