I'm trying to test my viewmodel. In the model I have val uiEvent = SingleLiveData>() which is my observable inherited from MutableLiveData. When I change the value it does not seems to call the observable. SingleLiveData is working fine and I have used it before.
@RunWith(RobolectricTestRunner::class)
class QrViewModel2Test {
lateinit var viewModel:QrViewModel2
var qrScannerCalled = false
var onNextCalled = false
@Mock
lateinit var lifecycleOwner: LifecycleOwner
@Before
fun setUp() {
val app = RuntimeEnvironment.application
viewModel = QrViewModel2(app)
viewModel.uiEvent.observe(lifecycleOwner, Observer {
when (it.second) {
viewModel.2 ->onNextCalled = true
viewModel.1 -> qrScannerCalled = true
}
})
}
@Test
fun openQrScanner() {
Assert.assertTrue(!qrScannerCalled)
viewModel.openQrScanner()
Assert.assertTrue(qrScannerCalled)
}
@Test
fun onNext() {
Assert.assertTrue(!onNextCalled)
viewModel.onNext()
Assert.assertTrue(onNextCalled)
}
}
from ViewModel this is how I call my observable.
fun openQrScanner(){
uiEvent.value = this to 1
}
fun onNext(){
uiEvent.value = this to 2
}
when eg onNext called it should chanhge onNextCalled to true but it's not.
Aucun commentaire:
Enregistrer un commentaire