gpt4 book ai didi

android - 代码在真实设备中成功运行,但 mockito 需要但未被调用

转载 作者:行者123 更新时间:2023-11-29 00:52:26 25 4
gpt4 key购买 nike

我得到了想要但没有被调用的 mockito。我不知道该怎么办,因为我是新来的 :)。顺便说一句,当我在真实设备中运行代码时,它没问题。

Wanted but not invoked: observer.onChanged(true);

测试类

 @RunWith(MockitoJUnitRunner::class)
class LoginViewModelTest {

var loginViewModel: LoginViewModel? = null
@get:Rule
val instantTaskExecutorRule = InstantTaskExecutorRule()
@Mock
lateinit var observer: Observer<Boolean>
@Mock
lateinit var dataManager: DataManager

@Before
fun setup() {
MockitoAnnotations.initMocks(this)
loginViewModel = LoginViewModel(dataManager)
}

@Test
fun testApiFetchDataSuccess() {
loginViewModel?.liveData?.observeForever(observer)
loginViewModel?.login("test", "1234")
verify(observer)?.onChanged(true)
}

}

View 模型类

class LoginViewModel(dataManager: DataManager?) : BaseViewModel() {

var liveData: MutableLiveData<Boolean>
var dataManager: DataManager? = dataManager

init {
liveData = MutableLiveData()
}

fun login(email: String, password: String) {
dataManager?.getFireStoreManager()?.login(email, password)?.get()?.addOnSuccessListener {
if (it.documents.size > 0) {
val data = it.documents[0].toObject(User::class.java)
liveData.postValue(true)
} else {
liveData.postValue(false)
}
}?.addOnFailureListener {
liveData.postValue(false)
}
}
}

最佳答案

get() 不返回任何内容,因为您模拟了保存所有数据的 dataManager

在我的例子中它看起来像这样:

`when`(collectionRef.document(ArgumentMatchers.anyString())).thenReturn(documentReference)
`when`(documentReference.get()).thenReturn(firestoreDocumentResult)

您只需要为您的数据管理器将触发的每个方法返回模拟。

关于android - 代码在真实设备中成功运行,但 mockito 需要但未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58024125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com