使用 mockito 模拟数据库引用回调
mock a database reference callback with mockito
我试图通过检索简单的用户信息来测试数据库引用,我试图模拟数据库引用并在其上应用 mockito 逻辑,但由于某种原因它不起作用,通过失败,我仍然new with mockito 如果有人可以帮助谢谢你,你能告诉我如何用 mockito
模拟 addValuelistener
- 这是我的代码
ServiceLocator
.db_reference
.child("Users")
.child(ServiceLocator.auth.currentUser!!.uid)
.addListenerForSingleValueEvent(object : ValueEventListener{
override fun onDataChange(snapshot: DataSnapshot) {
if(snapshot.exists()){
/// getting data
}
}
override fun onCancelled(error: DatabaseError) {
}
})
- 这是测试代码
@Test
fun h_testCaseGetUserInfoFromDB(){
val firebaseMock = mock(FirebaseAuth::class.java)
val databaseMock = mock(DatabaseReference::class.java)
ServiceLocator.auth = firebaseMock
ServiceLocator.db_reference = databaseMock
`when`(databaseMock.child("Users").child(firebaseMock.currentUser!!.uid).get()).thenReturn(
isNotNull())
}
请考虑以下关于 mocks 的注意事项
Mocks is not a real implementation and doesn't know anything about it.
It used mainly for checking that a certain action WILL happens i.e.
asserting that a certain function have received a certain parameters,
with out any guarantee that this function will perform successfully in
the real implementation.
Also Note it doesn't return any value like
real implementation.
因此,在您的代码中,您正在测试真实 Firebase 中存在的特定数据。所以你需要用真正的 firebase 实例进行测试,这里没有 Mocks 可以做的工作。所以不要使用它
我试图通过检索简单的用户信息来测试数据库引用,我试图模拟数据库引用并在其上应用 mockito 逻辑,但由于某种原因它不起作用,通过失败,我仍然new with mockito 如果有人可以帮助谢谢你,你能告诉我如何用 mockito
模拟 addValuelistener- 这是我的代码
ServiceLocator
.db_reference
.child("Users")
.child(ServiceLocator.auth.currentUser!!.uid)
.addListenerForSingleValueEvent(object : ValueEventListener{
override fun onDataChange(snapshot: DataSnapshot) {
if(snapshot.exists()){
/// getting data
}
}
override fun onCancelled(error: DatabaseError) {
}
})
- 这是测试代码
@Test
fun h_testCaseGetUserInfoFromDB(){
val firebaseMock = mock(FirebaseAuth::class.java)
val databaseMock = mock(DatabaseReference::class.java)
ServiceLocator.auth = firebaseMock
ServiceLocator.db_reference = databaseMock
`when`(databaseMock.child("Users").child(firebaseMock.currentUser!!.uid).get()).thenReturn(
isNotNull())
}
请考虑以下关于 mocks 的注意事项
Mocks is not a real implementation and doesn't know anything about it.
It used mainly for checking that a certain action WILL happens i.e. asserting that a certain function have received a certain parameters, with out any guarantee that this function will perform successfully in the real implementation.
Also Note it doesn't return any value like real implementation.
因此,在您的代码中,您正在测试真实 Firebase 中存在的特定数据。所以你需要用真正的 firebase 实例进行测试,这里没有 Mocks 可以做的工作。所以不要使用它