16

我有一个使用 Hilt 进行依赖注入的 android 应用程序设置,并且想对我的片段进行单元测试。

我目前正在使用以下方法创建我的视图模型:

private val viewModel: ExampleViewModel by viewModels()

我正在使用此处的代码创建用于测试的片段

我需要用一个模拟替换这个 ExampleViewModel,我该怎么做呢?

4

1 回答 1

2

我将在与您的问题相关的问题( https://github.com/google/dagger/issues/1972 )中粘贴“danysantiago”响应:

Hilt ViewModel 扩展通过声明将辅助工厂绑定到地图的模块而不是通过绑定具体 ViewModel 来工作。因此,您要做的是使用抽象 ViewModel 的键绑定具体 ViewModel 的辅助工厂,以便当 HiltViewModelFactory 根据类键查找工厂时,它使用具体 ViewModel 的辅助工厂。这太晦涩难懂了,因此我的意思是“不容易”获得。

但是,如果您可以扩展您尝试编写的测试用例以帮助我们提供一些指导,我不确定您是否尝试模拟/伪造 ViewModel 本身进行测试,但 Hilt 测试 API 应该允许您替换 ViewModel 中的依赖项,以便您可以使用 Fragment 和 ViewModel 编写测试。

于 2020-08-12T20:39:05.680 回答