So I have the following test that keeps failing with the following error:
java.lang.AssertionError: No values (latch = 1, values = 0, errors = 0, completions = 0)
val ocrProcessor = mockk<FirebaseFormProcessor>()
val date = listOf(DateTextExtraction())
every { ocrProcessor.scan(any(), any(), any()) } answers {
thirdArg<OcrResultCallback>().invoke(date)
}
viewModel = FormViewModel(ocrProcessor)
viewModel.addImage(bitmap)
viewModel.ocrAlert
.test()
.assertValue {
it == date
}
.addTo(disposeBag)
What this tries to test is the following:
override val ocrAlert: PublishSubject<List<TextExtractionInterface>> = PublishSubject.create()
override fun addImage(bitmap: Bitmap) {
if (files.value.isEmpty())
ocrProcessor.scan(bitmap, extract = textExtractionItems) { ocrResult ->
ocrAlert.onNext(ocrResult)
}
}
I am not quite sure what I am doing wrong here but I think it might have to do with threading problems.
edit:
I changed the code to this now:
val toBeTested = viewModel.ocrAlert
.subscribeOn(scheduler)
.observeOn(scheduler)
.test()
viewModel.addImage(bitmap)
toBeTested
.assertValue {
it == date
}
.addTo(disposeBag)