Android 单元测试异步代码rxjava/rxkotlin失败,出现闩锁=1错误
因此,我的以下测试一直失败,出现以下错误: java.lang.AssertionError:无值(闩锁=1,值=0,错误=0,完成=0)Android 单元测试异步代码rxjava/rxkotlin失败,出现闩锁=1错误,android,rx-java2,rx-kotlin,Android,Rx Java2,Rx Kotlin,因此,我的以下测试一直失败,出现以下错误: java.lang.AssertionError:无值(闩锁=1,值=0,错误=0,完成=0) orcAlert在测试时没有任何项,因此断言失败。您必须调用test(),发出信号orcalert.onNext,然后调用TestObserver::assertValue,查看项目是否已到达。@akarnokd感谢您的回复。所以我必须破解密码?如果我是正确的,我已经先执行addImage(),如果我是正确的,它会触发onNext。PublishSubjec
orcAlert
在测试时没有任何项,因此断言失败。您必须调用test()
,发出信号orcalert.onNext
,然后调用TestObserver::assertValue
,查看项目是否已到达。@akarnokd感谢您的回复。所以我必须破解密码?如果我是正确的,我已经先执行addImage(),如果我是正确的,它会触发onNext。PublishSubject
不存储项目,因此如果没有可以观察到的内容,它将再次显示为空。我如何修改我的测试,使它以正确的方式进行测试?例如:)@akarnokdSplit我建议的代码。
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)
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)
}
}
val toBeTested = viewModel.ocrAlert
.subscribeOn(scheduler)
.observeOn(scheduler)
.test()
viewModel.addImage(bitmap)
toBeTested
.assertValue {
it == date
}
.addTo(disposeBag)