【问题标题】:How to test a method in viewModel which returns LiveData value from repository如何在 viewModel 中测试从存储库返回 LiveData 值的方法
【发布时间】:2020-01-14 08:56:11
【问题描述】:

在我的 ViewModel 中,我从存储库类中调用一个方法,该方法从 Web 服务返回 LiveData。我的 viewModel 代码:

class MainViewModel @Inject constructor(val mainRepository: MainRepository) : ViewModel() {
   val source: LiveData<My_Result> = mainRepository.fetchApiresultFromClient(str_query)  
       .......... }

我的问题是,有没有办法从存储库中调用的 web 服务获取真实数据,或者我只是准备结果并断言它不为空;如下所示:

when(mainrepository.fetchApiresultFromClient(any(String::class))).thenReturn(myPreparedLiveData<My_result>)

【问题讨论】:

    标签: android unit-testing


    【解决方案1】:

    由于问题被标记为单元测试,恕我直言,期望来自 Web 服务的真实数据实际上并不属于单元测试的范围。您可能会调用集成测试,但是,从单元测试的角度来看,您可能会考虑模拟来自调用 Web 服务的函数的响应,并验证是否使用您期望的正确参数调用了该方法。

    【讨论】:

    • 谢谢。但是是否仍然可以通过集成测试从 Web 服务或本地 DB/sqlite 获取真实数据?
    • 当然可以。然后你只需要设置一个测试数据库。因此,对于特定的服务调用,您可以返回特定的数据,并且您可以断言。
    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    相关资源
    最近更新 更多