我从 SharedPreferences 切换到 Jetpack DataStore。
我无法在仪器测试中模拟来自数据存储调用的数据
声明中
val dataStore = context.createDataStore(name = "App Name")
在声明中从首选项中获取字符串
suspend fun getString(
key: Preferences.Key<String>,
defaultVal: String,
context: Context
): String {
return dataStore?.data?.catch {
if (it is IOException) {
it.printStackTrace()
emit(emptyPreferences())
} else {
throw it
}
}?.map {
it[key] ?: defaultVal
}?.first() ?: ""
}
在使用中
SharedPreferenceHelper.getString(
Preferences.Key<T>,
"",
requireContext()
)
操作数据存储首选项字符串键以获取仪器测试中的模拟值作为所需值。
提前谢谢您。
createDataStore
返回DataStore<Preference>
,this将帮助您创建具有泛型类型的类的模拟
或者你可以使用 mockito-kotlin 在 kotlin 中创建这样的模拟
val mockDataStore = mock<DataStore<Preference>>()