我有一个使用 Hilt 进行依赖注入的 android 应用程序设置,并且想对我的片段进行单元测试。
我目前正在使用以下方法创建我的视图模型:
private val viewModel: ExampleViewModel by viewModels()
我正在使用此处的代码创建用于测试的片段
我需要用一个模拟替换这个 ExampleViewModel,我该怎么做呢?
我有一个使用 Hilt 进行依赖注入的 android 应用程序设置,并且想对我的片段进行单元测试。
我目前正在使用以下方法创建我的视图模型:
private val viewModel: ExampleViewModel by viewModels()
我正在使用此处的代码创建用于测试的片段
我需要用一个模拟替换这个 ExampleViewModel,我该怎么做呢?
我将在与您的问题相关的问题( https://github.com/google/dagger/issues/1972 )中粘贴“danysantiago”响应:
Hilt ViewModel 扩展通过声明将辅助工厂绑定到地图的模块而不是通过绑定具体 ViewModel 来工作。因此,您要做的是使用抽象 ViewModel 的键绑定具体 ViewModel 的辅助工厂,以便当 HiltViewModelFactory 根据类键查找工厂时,它使用具体 ViewModel 的辅助工厂。这太晦涩难懂了,因此我的意思是“不容易”获得。
但是,如果您可以扩展您尝试编写的测试用例以帮助我们提供一些指导,我不确定您是否尝试模拟/伪造 ViewModel 本身进行测试,但 Hilt 测试 API 应该允许您替换 ViewModel 中的依赖项,以便您可以使用 Fragment 和 ViewModel 编写测试。