You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法断言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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 09:10:55