Android 单元测试异步代码rxjava/rxkotlin失败,出现闩锁=1错误

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

因此,我的以下测试一直失败,出现以下错误:

java.lang.AssertionError:无值(闩锁=1,值=0,错误=0,完成=0)


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)