共享偏好的 Mockito 单元测试

问题描述

我正在尝试对几个简单的方法进行简单的单元测试,但这是我第一次尝试使用 mockito,所以我真的不明白我做错了什么。

这是我要测试的课程

object AppPreferenceHelper {

private var sharedPreferences: SharedPreferences? = null

fun initPreferences(context: Context) {
    sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
}

fun checkIsFavorite(id: String): Boolean {
    getFavorites()
    favorites?.forEach {
        if (it == id)
            return true
    }
    return false
}

fun addFavorite(id: String?) {
    id?.let {
        favorites?.add(it)
        val gson = Gson()
        val temp = gson.toJson(favorites)
        sharedPreferences?.edit()?.putString(FAVORITES,temp)?.apply()
    }
}
}

这是我在单元测试课程中尝试做的

@RunWith(MockitoJUnitRunner::class)
class AppPreferenceHelperUnitTest {

private var prefhelper: AppPreferenceHelper? = null
private var context: Context = Mockito.mock(Context::class.java)

@Before
fun setUp(){
    this.context = Mockito.mock(Context::class.java)
    this.prefhelper = Mockito.mock(AppPreferenceHelper::class.java)
    prefhelper?.initPreferences(context)
}

@Test
fun testCheckIsFavorite(){
    prefhelper?.addFavorite("testId")
    verify(prefhelper)?.checkIsFavorite("testId")
}

}

这是我不断收到的错误

Wanted but not invoked:
appPreferenceHelper.checkIsFavorite(
"testId"
);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)