Код: Выделить всё
fun ViewModel.execute(block: () -> Unit) = viewModelScope.launch(Dispatchers.IO) { block() }
Код: Выделить всё
fun function() {
execute {
useCase().fold(
onSuccess = { },
onFailure = { }
)
}
}
Код: Выделить всё
var eventState: MutableLiveData = MutableLiveData()
Код: Выделить всё
fun function() {
execute {
useCase().fold(
onSuccess = {
eventState.postValue(AnyNewState)
},
onFailure = {
eventState.postValue(AnyNewState)
}
)
}
}
Код: Выделить всё
@get:Rule
val instantTaskExecutorRule = InstantTaskExecutorRule()
Код: Выделить всё
@Before
fun setup() {
MockKAnnotations.init(this)
Dispatchers.setMain(Dispatchers.Unconfined)
....
}
@After
fun onAfter() {
Dispatchers.resetMain()
}
Код: Выделить всё
@OptIn(ExperimentalCoroutinesApi::class)
class RealEstateDetailViewModelTest {
@get:Rule
var rule: InstantTaskExecutorRule = InstantTaskExecutorRule()
@RelaxedMockK
lateinit var useCase: UseCase
private lateinit var viewModel: MyViewModel
@Before
fun setup() {
MockKAnnotations.init(this)
Dispatchers.setMain(Dispatchers.Unconfined)
viewModel = MyViewModel(useCase)
}
@After
fun onAfter() {
Dispatchers.resetMain()
}
@Test
fun `viewmodel updates livedata`() =
runTest {
//Given
val result = mockk(relaxed = true)
val resultUiModel = mockk(relaxed = true)
coEvery { useCase(any()) } returns Result.success(result)
//When
viewModel.function("123", false)
//Then
assertTrue(viewModel.eventState.value is MyEvents.InitData)
}
}
Код: Выделить всё
assertTrue(viewModel.eventState.value is MyEvents.InitData)
Я что-то пропустил?
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/751 ... coroutines
Мобильная версия