Я пытаюсь протестировать ViewModel с LiveData, но есть некоторые проблемы. Я не могу получить это. Мой тест не проходит только в одном случае - значение последнего элемента HashMap равно true. Но испытания проходят любые другие случаи
Вот мой тест, который не проходит
class PermissionsViewModelTest{
@get:Rule
var rule: TestRule = InstantTaskExecutorRule()
lateinit var viewModel: PermissionsViewModel
@Before
fun setUp() {
viewModel = PermissionsViewModel()
}
//Omited
@Test
fun `Should post false if permissions is not granted`() {
val permissions = hashMapOf(
Pair("123", true),
Pair("123", false),
Pair("123", true),
Pair("123", true),
Pair("123", true)
)
val observer = Mockito.mock(Observer::class.java) as Observer<Boolean>
viewModel.isAllPermissionsGranted.observeForever(observer)
viewModel.checkPermissions(permissions)
assertFalse(viewModel.isAllPermissionsGranted.value!!)
}
//Omitted
}
и вот моя ViewModel
class PermissionsViewModel : ViewModel() {
var isAllPermissionsGranted = MutableLiveData<Boolean>().apply {
value = null
}
fun checkPermissions(permissionsResult: HashMap<String, Boolean>) {
var isAllPermissionsGranted = true
permissionsResult.values.forEach { isGranted ->
if (!isGranted) {
isAllPermissionsGranted = false
return@forEach
}
}
this.isAllPermissionsGranted.postValue(isAllPermissionsGranted)
}
}
Тестирую ли я LiveData неправильно? Или есть проблемы с тестированием LiveData?