如何在 Espresso 中模拟 Jetpack 数据存储

问题描述 投票:0回答:1

我从 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()
            )

操作数据存储首选项字符串键以获取仪器测试中的模拟值作为所需值。

提前谢谢您。

android android-testing android-preferences android-jetpack-datastore
1个回答
2
投票

createDataStore
返回
DataStore<Preference>
this将帮助您创建具有泛型类型的类的模拟

或者你可以使用 mockito-kotlin 在 kotlin 中创建这样的模拟

 val mockDataStore = mock<DataStore<Preference>>()
© www.soinside.com 2019 - 2024. All rights reserved.