I'm trying to mock a firebase user to provide it for my test , i have mocked the firebase auth class from which i get the uid of the currently signed in user but for some it keeps throwing the same error , i would appreciate your helps guys
- This is my production code
private fun getUserProfileInfo(){
val db = ServiceLocator.reference
val child = db.child("Users")
val user = ServiceLocator.firebaseUser
val value = child.child(user!!.uid)
value.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if(snapshot.exists()){
val model = snapshot.getValue(ProfileModel::class.java)
userName = model!!.firstName
userPic = model.profilePicUrl
}
}
override fun onCancelled(error: DatabaseError) {
}
})
}
- This is my testing code
@Test
fun testCaseProfileInfo(){
val firebaseUserMock = mock(FirebaseUser::class.java)
val firebaseMock = mock(FirebaseAuth::class.java)
val databaseMock = mock(DatabaseReference::class.java)
ServiceLocator.firebaseAuth = firebaseMock
ServiceLocator.firebaseUser = firebaseUserMock
ServiceLocator.reference = databaseMock
doReturn(firebaseUserMock).`when`(firebaseMock).currentUser
val uid = doReturn("123").`when`(firebaseMock).uid // error here
doReturn(databaseMock.child("Users")
.child(uid!!))
.`when`(databaseMock).get()
}
- This is my Service Locator Class
object ServiceLocator {
var firebaseAuth = FirebaseAuth.getInstance()
var reference=FirebaseDatabase.getInstance(Utils.DATABASE_URL).reference
}
- Error generated ( after update )
org.mockito.exceptions.misusing.UnfinishedStubbingException:
Unfinished stubbing detected here:
-> at com.revert.journey.app.chatui.FriendsRequestActivityTest.testCaseProfileInfo
- Quick Update
@Test
fun testCaseProfileInfo(){
val userMock = mock(FirebaseUser::class.java)
val firebaseMock = mock(FirebaseAuth::class.java)
val databaseMock = mock(DatabaseReference::class.java)
ServiceLocator.firebaseAuth = firebaseMock
ServiceLocator.firebaseUser = userMock
ServiceLocator.reference = databaseMock
doReturn(userMock).`when`(firebaseMock).currentUser
doReturn("123").`when`(userMock)!!.uid
doReturn(databaseMock
.child("Users")
.child("123")) // ( null pointer exception on this string)..
.`when`(databaseMock).get()
}