Ktx ViewModel 之 Hilt-Fragment 测试方法:打包,造工厂,以假换真。读者:什么跟什么啊?

本文介绍了如何在使用Ktx的MVVM架构下进行ViewModel的Hilt-Fragment测试。通过添加ProvideModel方程、创建Fragment Factory以及利用LiveData测试方程,详细阐述了测试ViewModel的步骤,包括在测试中如何替换真实的ViewModel以进行模拟测试。

👄0. 简言

🤓:现在的安卓是 MVVM 大流行,嗯,不是传染病啊!测试 ViewModel 势在必行。可是,如果你用的是 Ktx,你就测不了。例如:

val vm: ShoppingViewModel by viewModels()

无论你把 vm 换成啥样,如 var,就是不让你测。除非,用旧的方法:

lateinit var viewModel: ShoppingViewModel
onCreate() {
   
   
    viewModel = ViewModelProvider(...)
}

可是,你就不爽了吧,多了一行,还要打开 private,才能看。
😁:其实,你打包就能测。
💆:我要外卖。


🔌1. Gradle

老套路,外卖需要 Kotlin.Reflect。
😳:怎么成了外卖了?
🤔:… 把这个加进你的 dependencies 。

// Kotlin Reflect
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"

🔑2. 加 ProvideModel 方程

  • ProvideViewModel.kt
inline fun <reified VM : ViewModel> Fragment.provideViewModel(
    noinline ownerProducer: () -> ViewModelStoreOwner = {
   
    this },
    noinline factoryProducer: (() -> ViewModelProvider.Factory)? = null
): Lazy<VM> =
    OverridableLazy(viewModels(ownerProducer, factoryProducer))

// wrapper
class OverridableLazy<T>(var implementation: Lazy<T>): Lazy<T> 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值