11
का उपयोग कर एक SharedPreferences उपहास करने के लिए मैं सिर्फ एंड्रॉयड में यूनिट Instrumented परीक्षण के बारे में पढ़ा है और मुझे आश्चर्य है कि कैसे मैं की तरह hereकैसे Mockito
मेरे कोड इस पर कोई SharedPreferencesHelper वर्ग के बिना एक SharedPreferences नकली कर सकते हैं:
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;
}}
क्या अन्य कक्षाओं के बिना साझा किए गए साझाकरण को मॉक करना संभव है?
ठीक है, धन्यवाद। 'सार्वजनिक स्थैतिक शून्य सेट यूज़र क्रेडेंशियल्स (संदर्भ संदर्भ, स्ट्रिंग उपयोगकर्ता नाम, स्ट्रिंग टोकन)' परीक्षण के बारे में कैसे? मैं 'testGetValidToken()' से पहले उपयोगकर्ता प्रमाण-पत्र सेट करना चाहता हूं, मुझे लगता है कि मुझे 'SharedPreferences.Editor' के लिए नकली की आवश्यकता है, लेकिन अगर मैं उस मॉक द्वारा कुछ कुंजी सहेजता हूं तो यह 'SharedPreferences' mock' द्वारा उपलब्ध होगा? – adamura88
जब मैं 'संपादन' कहलाता हूं तो मैं एक 'संपादक' नकली वापस कर दूंगा। "SharePreferences मॉक द्वारा उपलब्ध होगा?" नहीं, एक नकली एक गूंगा वस्तु है –
आपके कोड में वाक्यविन्यास त्रुटियां हैं। –