Ich bin ziemlich neu für Android & Java. Ich versuche, eine Unit-Test zu schreiben, die überprüft, ob Firebase Methode mit korrekten Parametern aufgerufen wird &, dass bestimmte Rückruf auf Erfolg abgefeuert wirdUnitTest gegen Firebase sicherstellen, dass Rückruf ausgelöst wird
public class RegistrationViewModel {
private iRegistrationViewCallback viewCallback;
private FirebaseAuth mAuth;
public String email;
public String password;
public RegistrationViewModel(iRegistrationViewCallback view, FirebaseAuth mockAuth) {
viewCallback = view;
mAuth = mockAuth;
}
public void createUser() {
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener((Executor) this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
viewCallback.doSomething();
}
});
}
public void setEmail(String email) {
this.email = email;
}
public void setPassword(String password) {
this.password = password;
}
}
My Unit-Test sieht wie folgt aus:
public class RegistrationViewModelUnitTest {
private RegistrationViewModel viewModelUnderTest;
private iRegistrationViewCallback mockView;
private FirebaseAuth mockAuth;
@Before
public void SetUp() {
mockView = mock(iRegistrationViewCallback.class);
mockAuth = mock(FirebaseAuth.getInstance().getClass());
viewModelUnderTest = new RegistrationViewModel(mockView,mockAuth);
}
@Test
public void progressBarIsDismissedWhenRegistrationIsSuccessFul() throws Exception {
String email = "somusername";
String password = "somePassword";
viewModelUnderTest.email = email;
viewModelUnderTest.password = password;
viewModelUnderTest.createUser();
verify(mockAuth).createUserWithEmailAndPassword(email,password);
verify(mockView).doSomething();
}
}
verify(mockView).doSomething();
offensichtlich scheitert.
Was wäre der beste Weg zu überprüfen, ob viewCallback.doSomething();
erfolgreich aufgerufen wird. Sollte ich die onComplete
irgendwie stubben? oder gibt es eine andere Möglichkeit, dies zu tun? Ich habe darüber nachgedacht, Firebase-Code hinter eine Schnittstelle zu setzen, kann aber immer noch nicht herausfinden, wie man überprüft, ob der Callback ausgelöst wird. Ich benutze Mockito zum Spotten.
können Sie die Implementierung der Methode createUserWithEmailAndPassword hinzufügen? –
auch, ist FirebaseAuth ein Singleton? –
Das ist Teil der Firebase SDK, soweit ich sagen kann, ist der Code nicht öffentlich verfügbar. https://developers.google.com/android/reference/com/google/firebase/auth/FirebaseAuth.html#createUserWithEmailAndPassword(java.lang.String,%20java.lang.String) –