11
Ho appena letto su Unit Instrumented Test in Android e mi chiedo come posso prendere in giro uno SharedPreferences senza alcuna classe SharedPreferencesHelper su di esso come hereCome prendere in giro uno SharedPreferences utilizzando Mockito
il mio codice è:
public class Auth {
private static SharedPreferences loggedUserData = null;
public static String getValidToken(Context context)
{
initLoggedUserPreferences(context);
String token = loggedUserData.getString(Constants.USER_TOKEN,null);
return token;
}
public static String getLoggedUser(Context context)
{
initLoggedUserPreferences(context);
String user = loggedUserData.getString(Constants.LOGGED_USERNAME,null);
return user;
}
public static void setUserCredentials(Context context, String username, String token)
{
initLoggedUserPreferences(context);
loggedUserData.edit().putString(Constants.LOGGED_USERNAME, username).commit();
loggedUserData.edit().putString(Constants.USER_TOKEN,token).commit();
}
public static HashMap<String, String> setHeaders(String username, String password)
{
HashMap<String, String> headers = new HashMap<String, String>();
String auth = username + ":" + password;
String encoding = Base64.encodeToString(auth.getBytes(), Base64.DEFAULT);
headers.put("Authorization", "Basic " + encoding);
return headers;
}
public static void deleteToken(Context context)
{
initLoggedUserPreferences(context);
loggedUserData.edit().remove(Constants.LOGGED_USERNAME).commit();
loggedUserData.edit().remove(Constants.USER_TOKEN).commit();
}
public static HashMap<String, String> setHeadersWithToken(String token) {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Authorization","Token "+token);
return headers;
}
private static SharedPreferences initLoggedUserPreferences(Context context)
{
if(loggedUserData == null)
loggedUserData = context.getSharedPreferences(Constants.LOGGED_USER_PREFERENCES,0);
return loggedUserData;
}}
È possibile simulare SharedPreferences senza creare altre classi su di esso?
Ok, grazie. Che ne dite di 'public static void setUserCredentials (Contesto contesto, String username, String token)' test? Vorrei impostare le credenziali dell'utente prima di 'testGetValidToken()' Suppongo di aver bisogno di un mock per 'SharedPreferences.Editor' ma se salvo qualche chiave da quel simulacro sarà disponibile per il simulatore di' SharedPreferences'? – adamura88
Mi piacerebbe restituire un simulatore di 'Editor' quando viene chiamato' edit'. "sarà disponibile da SharedPreferences mock?" no, un finto è un oggetto stupido –
Il tuo codice ha errori di sintassi. –