如何模拟使用匕首柄注入的视图模型进行android测试



我在项目中使用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测试文档以获得进一步帮助。

相关内容

  • 没有找到相关文章

最新更新