私はかなり新しいandroid & javaです。UnitTest for Firebaseコールバックが確実に呼び出される
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();
:私はFirebaseメソッドは、特定のコールバックが成功
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;
}
}
に解雇された私のユニットテストはこのようになっていることを正しいパラメータ&と呼ばれていることを確認するユニットテストを書くことをしようとしています明らかに失敗する。
成功するとviewCallback.doSomething();
が呼び出されたことを確認するにはどうすればよいでしょうか。どういうわけかonComplete
をスタブする必要がありますか?またはこれを行う別の方法がありますか?私はFirebaseコードをインターフェイスの後ろに置くことを考えましたが、コールバックが起動されたことを確認する方法をまだ理解できません。 私はMockitoを使っています。
createUserWithEmailAndPasswordメソッドの実装を追加できますか? –
また、FirebaseAuthはシングルトンですか? –
それはコードが公に利用可能でないことを私が伝えることができる限り、firebase sdkの一部です。 https://developers.google.com/android/reference/com/google/firebase/auth/FirebaseAuth.html#createUserWithEmailAndPassword(java.lang.String,%20java.lang.String) –