J'essaie d'utiliser Mockito pour tester un gestionnaire de paramètres qui enregistre des données via SharedPreferences
.Essayer de se moquer des SharedPreferences à l'aide de Mockito
Depuis SharedPreferences
utilise Context
, j'ai besoin d'utiliser des classes fictives.
Ceci est mon paramètres classe gestionnaire:
public class SettingsManager implements ISettingsManager {
protected SharedPreferences prefs;
public SettingsManager(SharedPreferences prefs) {
this.prefs = prefs;
}
private boolean getBooleanPreference(String key) {
return prefs.getBoolean(key, true);
}
private void setBooleanPreference(boolean enabled, String key) {
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(key, enabled);
editor.commit();
}
}
Tel est le cas de test je l'ai écrit:
Context mContext = Mockito.mock(Context.class);
SharedPreferences mSharedPreference = Mockito.mock(SharedPreferences.class);
SharedPreferences.Editor mEditor = Mockito.mock(SharedPreferences.Editor.class, Mockito.RETURNS_DEEP_STUBS);
Mockito.when(mSharedPreference.edit()).thenReturn(mEditor);
Mockito.when(mEditor.commit()).thenReturn(true);
Mockito.when(mEditor.putBoolean(Mockito.anyString(), Mockito.anyBoolean())).thenReturn(mEditor);
SettingsManager manager = new SettingsManager(mSharedPreference);
boolean current = manager.areNotificationsEnabled();
manager.setNotificationsEnabled(!current);
boolean newValue = manager.areNotificationsEnabled();
Assert.assertTrue(newValue != current);
Le problème est quand je mis le drapeau setNotificationsEnabled
, le newValue
reste le même de current
: SharedPreferences
ne conserve pas de données. Comment puis-je sauvegarder les données en SharedPreferences
pendant le test?
Je vais essayer! Merci :) –
robolectrichas très mauvais docs. pouvez-vous m'aider avec l'un des docs pour l'utilisation de robolectric. –