久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

如何使用 Mockito 模擬 SharedPreferences

How to mock a SharedPreferences using Mockito(如何使用 Mockito 模擬 SharedPreferences)
本文介紹了如何使用 Mockito 模擬 SharedPreferences的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

我剛剛閱讀了有關(guān) Android 中的單元檢測(cè)測(cè)試,我想知道如何在沒(méi)有任何 SharedPreferencesHelper 類(lèi)的情況下模擬 SharedPreferences,例如 這里

I have just read about Unit Instrumented Testing in Android and I wonder how I can mock a SharedPreferences without any SharedPreferencesHelper class on it like here

我的代碼是:

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;
}}

是否可以在不創(chuàng)建其他類(lèi)的情況下模擬 SharedPreferences?

Is is possible to mock SharedPreferences without creating other class on it?

推薦答案

所以,因?yàn)?SharedPreferences 來(lái)自您的 context,所以很簡(jiǎn)單:

So, because SharedPreferences comes from your context, it's easy:

final SharedPreferences sharedPrefs = Mockito.mock(SharedPreferences.class);
final Context context = Mockito.mock(Context.class);
Mockito.when(context.getSharedPreferences(anyString(), anyInt())).thenReturn(sharedPrefs);

// no use context

例如,對(duì)于 getValidToken(Context context),測(cè)試可以是:

for example, for getValidToken(Context context), the test could be:

@Before
public void before() throws Exception {
    this.sharedPrefs = Mockito.mock(SharedPreferences.class);
    this.context = Mockito.mock(Context.class);
    Mockito.when(context.getSharedPreferences(anyString(), anyInt())).thenReturn(sharedPrefs);
}

@Test
public void testGetValidToken() throws Exception {
    Mockito.when(sharedPrefs.getString(anyString(), anyString())).thenReturn("foobar");
    assertEquals("foobar", Auth.getValidToken(context));
    // maybe add some verify();
}

這篇關(guān)于如何使用 Mockito 模擬 SharedPreferences的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

EditText: Disable Paste/Replace menu pop-up on Text Selection Handler click event(EditText:禁用文本選擇處理程序單擊事件上的粘貼/替換菜單彈出)
Multiline EditText with Done SoftInput Action Label on 2.3(2.3 上帶有完成 SoftInput 操作標(biāo)簽的多行 EditText)
How to detect the swipe left or Right in Android?(如何在 Android 中檢測(cè)向左或向右滑動(dòng)?)
Prevent dialog dismissal on screen rotation in Android(防止在Android中的屏幕旋轉(zhuǎn)對(duì)話框解除)
How do I handle ImeOptions#39; done button click?(如何處理 ImeOptions 的完成按鈕點(diǎn)擊?)
How do you set EditText to only accept numeric values in Android?(您如何將 EditText 設(shè)置為僅接受 Android 中的數(shù)值?)
主站蜘蛛池模板: 国产精品久久久久久久久久久久久 | 精品国产一区二区在线 | 日日骚av| 欧美视频在线播放 | 热re99久久精品国产99热 | 人人干人人干人人干 | 日韩精品1区2区3区 成人黄页在线观看 | 中文字幕精品一区二区三区精品 | 欧美在线综合 | 久久精品久久久 | 日日干夜夜操 | 日韩成人在线电影 | 精品国产免费人成在线观看 | 免费视频一区二区三区在线观看 | 韩日在线 | 日韩色视频 | 成人欧美一区二区三区 | 欧美一级淫片免费视频黄 | www.国产| 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 国产在线网站 | 亚洲午夜视频 | 欧美日韩亚洲系列 | 一级网站| 中文字幕在线观看视频一区 | 欧美黑人一级爽快片淫片高清 | 国产精品影视在线观看 | 伊人91在线 | 99re在线观看| 怡红院成人在线视频 | 99精品电影 | 欧美性一区二区三区 | 久久久久久久综合色一本 | 亚洲狠狠| 精品真实国产乱文在线 | 一区二区视频在线 | www.干| 日韩av一区二区在线观看 | 一区二区在线 | 亚洲一区二区三区免费视频 | 在线观看精品 |