
ViewModel Unit Testing Guide - Turbine, MockK & TestDispatcher
Unit Testing ViewModels with Turbine and MockK Write comprehensive ViewModel tests using modern Kotlin testing tools. MainDispatcherRule Setup @ get : Rule val mainDispatcherRule = MainDispatcherRule () @Test fun testUserLoading () = runTest { // Automatically uses TestDispatchers } MockK coEvery/coVerify val mockRepository = mockk < UserRepository >() coEvery { mockRepository . fetchUser ( any ()) } returns User ( 1 , "Alice" ) val viewModel = UserViewModel ( mockRepository ) coVerify { mockRepository . fetchUser ( "123" ) } Turbine Flow Testing @Test fun testUiStateFlow () = runTest { turbineScope { val uiStateTurbine = viewModel . uiState . testIn ( backgroundScope ) assertEquals ( UiState . Loading , uiStateTurbine . awaitItem ()) assertEquals ( UiState . Success ( user ), uiStateTurbine . awaitItem ()) uiStateTurbine . ensureAllEventsConsumed () } } StateFlow State Transitions @Test fun testStateTransitions () = runTest { viewModel . loadUser ( "123" ) advanceTimeBy ( 100 ) // Sim
Continue reading on Dev.to Tutorial
Opens in a new tab




