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”