我在项目中使用dagger hilt
。我想为一些片段写UI test
。我需要模拟测试类中的viewModel
,并将其与测试下的片段相关联。。我阅读了dagger hilt
文档,但没有找到任何解决方案。
class HomeViewModel @ViewModelInject constructor(
private val repository: MainRepository,
prefManager: PrefManager,
private val firebaseAnalytics: FirebaseAnalytics,
@Assisted private val savedStateHandle: SavedStateHandle
) : ViewModel() {
/////
}
@AndroidEntryPoint
class HomeFragment : BaseFragment() {
private val viewModel: HomeViewModel by viewModels()
/////
}
如果您的目标是用模拟数据测试您的片段,那么您不必模拟视图模型;相反,您可以在dagger模块中提供模拟存储库实现:
@Module
@TestInstallIn(
components = SingletonComponent::class,
replaces = ProdRepositoryModule::class
)
interface FakeRepositoryModule {
@Binds fun bind(impl: FakeRepository): MainRepository
}
当运行UI测试时,这将用FakeRepositoryModule
模块中提供的绑定替换ProdRepositoryModule
模块中的所有绑定。查看Hilt测试文档以获得进一步帮助。