这是一个自我的“问答”帖子,用来跟踪我的问题并完成对它的研究。我正在寻找一个模拟WorkManager()的选项。它利用LiveData和它的asFlow()扩展函数调用。我正在寻找一种方法来模拟这个LiveData.asFlow()调用。在这一刻,许多答案是不是一个很适合,所以我决定写这个新的职位。()使用WorkManager的代码应该放在androidTest包中,但我的限制迫使我寻找一个普通test包的解决方案。
WorkManager
LiveData
asFlow()
LiveData.asFlow()
androidTest
test
t40tm48m1#
Kotlin extensions被认为是Java静态方法。Mockito从v5开始就内置了对这些功能的支持。在v5之前,它可以手动启用。但是,通过使用Mockito,我无法测试LiveData的asFlow()扩展。Mockk是另一个替代方案。@file:JvmName("FlowLiveDataConversions")应该特别注意,因为它覆盖了应该在mockkStatic(<full path>)中定义的包名。
Kotlin extensions
Java
Mockito
Mockk
@file:JvmName("FlowLiveDataConversions")
mockkStatic(<full path>)
val flow = flow { val workInfo: WorkInfo workInfo = WorkInfo(UUID.randomUUID(), WorkInfo.State.SUCCEEDED, Data.EMPTY, emptyList(), Data.EMPTY, 0, 0) emit(workInfo) } mockkStatic("androidx.lifecycle.FlowLiveDataConversions") every { mockedLiveData.asFlow() } returns flow `when`(workManager.getWorkInfoByIdLiveData(any())) .thenReturn(mockedLiveData)
1条答案
按热度按时间t40tm48m1#
Kotlin extensions
被认为是Java
静态方法。Mockito
从v5开始就内置了对这些功能的支持。在v5之前,它可以手动启用。但是,通过使用
Mockito
,我无法测试LiveData
的asFlow()
扩展。Mockk
是另一个替代方案。@file:JvmName("FlowLiveDataConversions")
应该特别注意,因为它覆盖了应该在mockkStatic(<full path>)
中定义的包名。