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

如何创建本地测试用Result类?ViewModel测试模拟Result返回方法

解决RemoteConfigNetworkRepository测试中Result返回无效的问题

问题根源

你当前测试代码里直接通过构造函数创建Result实例的写法是错误的:Kotlin标准库的Result是inline类,不允许直接调用构造函数实例化,必须使用官方提供的Result.success()或Result.failure()工厂方法。另外,目标方法返回的是Result<RemoteConfig?>,测试中要保证类型匹配。

修正后的测试代码

@Test
fun fetchRemoteConfig_saveRemoteConfig() = runTest {
    val fakeRemoteConfig = RemoteConfig(
        0,
        0,
        "",
        0,
    )
    // 使用Result.success()工厂方法创建成功结果,类型匹配Result<RemoteConfig?>
    coEvery { remoteRepo.fetchRemoteConfig(true) } returns Result.success(fakeRemoteConfig)

    viewModel.fetchRemoteConfig(true)
    
    // 可添加验证逻辑,比如检查ViewModel的状态变化
    // 示例:assertEquals(fakeRemoteConfig, viewModel.remoteConfigState.value)
}

额外注意事项

  • 确保remoteRepo是通过MockK创建的Mock实例,比如:val remoteRepo = mockk<RemoteConfigNetworkRepository>()
  • 确认ViewModel已经正确注入了这个Mock实例,而非真实的Repository对象
  • 如果需要模拟失败场景,使用Result.failure():
    coEvery { remoteRepo.fetchRemoteConfig(true) } returns Result.failure(Exception("test error"))
    

内容的提问来源于stack exchange,提问作者c-an

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:06:07