Kotlin 使用Mockito在Android ViewModel中模拟LiveData对象
我有一个像这样的视图模型Kotlin 使用Mockito在Android ViewModel中模拟LiveData对象,kotlin,mockito,android-testing,android-architecture-components,android-livedata,Kotlin,Mockito,Android Testing,Android Architecture Components,Android Livedata,我有一个像这样的视图模型 class SignInViewModel(private val requestDataUseCase: RequestDataUseCase) : ViewModel() { ... var isLoading = MediatorLiveData<Boolean>() ... fun requestData(id: String) { requestDataUseCase(id).let { liveData -&g
class SignInViewModel(private val requestDataUseCase: RequestDataUseCase) : ViewModel() {
...
var isLoading = MediatorLiveData<Boolean>()
...
fun requestData(id: String) {
requestDataUseCase(id).let { liveData ->
isLoading.value = true
isLoading.addSource(liveData) {
it?.either(this::onSuccess, this::handleError)
isLoading.removeSource(liveData)
isLoading.value = false
}
}
}
...
}
class-SignInViewModel(私有val-requestDataUseCase:requestDataUseCase):ViewModel(){
...
var isLoading=MediatorLiveData()
...
数据(id:字符串){
requestDataUseCase(id).let{liveData->
isLoading.value=true
isLoading.addSource(liveData){
它?.other(this::onSuccess,this::handleError)
isLoading.removeSource(liveData)
isLoading.value=false
}
}
}
...
}
我的测试班
class SignInViewModelTest {
private lateinit var signInViewModel: SignInViewModel
@Mock private lateinit var requestDataUseCase: RequestDataUseCase
private val dataResponse: MutableLiveData<String> = MutableLiveData()
@Before
fun setUp() {
signInViewModel = SignInViewModel(requestDataUseCase)
}
@Test
fun testRequestData() {
`when`(requestDataUseCase(any(), any())).thenReturn(dataResponse)
//trying to call
fun requestData("123456")
}
}
类标志查看模型测试{
私有lateinit变量SignenView模型:SignenView模型
@模拟私有lateinit var requestDataUseCase:requestDataUseCase
private val dataResponse:MutableLiveData=MutableLiveData()
@以前
趣味设置(){
SignenViewModel=SignenViewModel(请求数据用例)
}
@试验
有趣的testRequestData(){
`当`(requestDataUseCase(any(),any())。然后返回(dataResponse)
//打电话
请求数据(“123456”)
}
}
问题是我在SignInViewModel
类中的isLoading
变量上得到了NullPointerException
它是控制XML布局中的ProgressBar
的变量
所以我的问题是如何模拟isLoading
变量
或者,对于如何为该场景创建测试,是否有任何建议
提前感谢。您是否使用此依赖项
测试实现“android.arch.core:core测试:$lifecycle\u version”
?