无法断言ViewModel中StateFlow的值:问题排查求助
问题:StateFlow单元测试实际值始终为空,AS可通过但CLI失败
ViewModel代码
class ClickRowViewModel @Inject constructor( private val clickRowRepository: ClickRowRepository ): ViewModel() { private val _clickRowsFlow = MutableStateFlow<List<ClickRow>>(mutableListOf()) val clickRowsFlow = _clickRowsFlow.asStateFlow() fun fetchAndInitialiseClickRows() { viewModelScope.launch { _clickRowsFlow.update { clickRowRepository.fetchClickRows() } } } }
测试相关情况
已引入InstantTaskExecutorRule:
@get:Rule val instantTaskExecutorRule = InstantTaskExecutorRule()
测试中,模拟返回的结果显示包含两个元素,但获取到的actualValue始终是空列表,无法与预期值匹配。
更新1:使用first操作符仍无效果
尝试用first终端操作符获取StateFlow的值,返回结果依旧是空列表。
更新2:使用async触发超时错误
使用async后出现如下错误:
kotlinx.coroutines.test.UncompletedCoroutinesError: After waiting for 60000 ms, the test coroutine is not completing, there were active child jobs: [DeferredCoroutine{Active}@a4a38f0] at kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTestCoroutine$3$3.invokeSuspend(TestBuilders.kt:342)
更新3:Android Studio内测试通过,CLI运行失败
该测试在Android Studio中执行可以通过,但使用命令行工具运行时失败。
内容的提问来源于stack exchange,提问作者Kartik
相关产品推荐
相关产品推荐

