【问题标题】:How to mock the view model with Hilt for unit testing fragments?如何使用 Hilt 模拟视图模型以进行单元测试片段?
【发布时间】:2020-07-09 21:14:52
【问题描述】:
我有一个使用 Hilt 进行依赖注入的 android 应用程序设置,并且想对我的片段进行单元测试。
我目前正在使用以下方法创建我的视图模型:
private val viewModel: ExampleViewModel by viewModels()
我正在使用来自here 的代码创建用于测试的片段
我需要用模拟替换这个 ExampleViewModel,我该怎么做?
【问题讨论】:
标签:
android
kotlin
android-viewmodel
dagger-hilt
【解决方案1】:
我将在与您的问题相关的问题 (https://github.com/google/dagger/issues/1972) 中粘贴“danysantiago”回复:
Hilt ViewModel 扩展通过声明绑定辅助的模块来工作
工厂到地图,而不是通过绑定具体的 ViewModel。所以,
你要做的是绑定混凝土的辅助工厂
ViewModel 使用抽象 ViewModel 的键,这样当
HiltViewModelFactory 根据使用的类键查找工厂
具体 ViewModel 的辅助工厂。这是超级
晦涩难懂,因此我的意思是“不容易”获得。
但是,如果您可以扩展您正在尝试编写的测试用例
这可以帮助我们提供一些指导,我不确定你是否
试图模拟/伪造 ViewModel 本身进行测试,但 Hilt 测试
API 应该允许您替换 ViewModel 中的依赖项,以便您
可以使用 Fragment 和 ViewModel 编写测试。