ho questo metodo di produzione:Mockito Uri.parse restituisce sempre null
public boolean onShouldOverrideUrlLoading(String url) {
boolean isConsumed = false;
if (url.contains("code=")) {
Uri uri = Uri.parse(url);
String authCode = uri.getQueryParameter("code");
mView.authCodeObtained(authCode);
isConsumed = true;
}
return isConsumed;
}
E ho questo metodo di prova Mockito:
@Test
public void onShouldOverrideUrlLoadingOnAuthCodeObtained(){
String code = "someCode";
boolean isConsumed = mPresenter.onShouldOverrideUrlLoading("http://localhost/?code=" + code);
verify(mView, times(1)).authCodeObtained(code);
assertEquals(isConsumed, true);
}
Ma sembra una volta che viene eseguito il codice e raggiunge Uri. parse (url), ottengo un puntatore nullo. Cosa mi manca? In produzione funziona perfettamente. Solo durante il test, Uri.parse() restituisce null.
Grazie!
Il problema è probabilmente a Uri, probabilmente male inizializzare nell'ambiente di prova. We 'Uri' non esiste nell'SDK Android [' URI'] (https://developer.android.com/reference/java/net/URI.html#create (java.lang.String)). Quindi non sembra una classe spedita, questo potrebbe essere il problema. Niente relativo al mockito. – Brice
@Brice Grazie. Sì, sembrava essere il problema. Dovresti postare questa come risposta. La classe Uri proviene da Android. Quindi Mockito ha qualche difficoltà a lavorare in questo modo. –
fatto :) Spero che questo abbia aiutato. – Brice