hilt的辅助工厂是最终的,因此,当我们想要将viewmodel绑定模块更改为其测试版本时,我们不能创建内部匿名类。
那么,我们应该如何模仿剑柄注入的viewmodels呢?
项目视图模型绑定模块:
@InstallIn(ActivityRetainedComponent::class)
@Module
interface ActivityModule
{
@Binds
@IntoMap
@StringKey("my.package.MyViewModel")
fun bindMyViewModel(factory: MyViewModel_AssistedFactory): ViewModelAssistedFactory<out ViewModel>
}
要模拟viewmodel的片段测试代码:
@HiltAndroidTest
@UninstallModules(ActivityModule::class)
class FragmentTest
{
@get:Rule
val hiltRule = HiltAndroidRule(this)
private val viewModelFactory : MyViewModel _AssistedFactory= object : MyViewModel _AssistedFactory {
//ERROR: This type is final, so it cannot be inherited from
}
}
暂无答案!
目前还没有任何答案,快来回答吧!