Ошибка. Невозможно вызвать «String.isEmpty()», поскольку «parent.path» имеет значение null для функций хранилища данных Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка. Невозможно вызвать «String.isEmpty()», поскольку «parent.path» имеет значение null для функций хранилища данных

Сообщение Anonymous »


Я пишу тестовый класс, используя платформу mockk koltin для хранения данных. Класс выглядит

`open class MyStorageClass(context: Context) : Storage { частный val testDataStore = context.dataStore Private val dataException: приостановить FlowCollector.(причина: Throwable) -> Unit = {исключение -> когда (исключение) { is IOException -> испускать(emptyPreferences()) else -> выбросить исключение } } переопределить приостановку развлечения getPreferenceFlow(key: Preferences.Key, defaultValue: T): Flow = testDataStore.data .catch(исключение данных) .map { предпочтения -> предпочтения [ключ] ?: defaultValue .also { Timber.d("Есть предпочтение: ${key.name}: $it") } } }` как выглядит интерфейс хранилища

`interface Storage { приостановить веселье getPreferenceFlow(key: Preferences.Key, defaultValue: T): Flow }` Тестовый класс, использующий mockk в Kotlin, записывается как

`class HnavStorageTest { частный lateinit var dataStore: DataStore Настройки lateinit var: Настройки lateinit varockContext: Контекст lateinit var sut: HnavStorage @До забавная установка() { MockKAnnotations.init(это правда) dataStore = макет (расслабленный = правда) предпочтения = макет (расслабленный = правда) макетныйконтекст = макет (расслабленный = правда) sut = HnavStorage (mockContext) } @Тест весело `test getPreference Flow`() = runBlocking { coEvery { dataStore.data } возвращает flowOf (предпочтения) Ключ val: Preferences.Key = stringPreferencesKey(name = "test_key") val defaultValue = "test_value" val ожидаемое значение = "высмеиваемое_значение" каждый {preferences[key]} возвращает ожидаемое значение val поток = sut.getPreferenceFlow(ключ, defaultValue) результат var: String? = ноль поток.сбор { результат = это } утверждать (результат == ожидаемое значение) verify { Timber.d("Получить значение предпочтения: ${key.name}: $expectedValue") } } }` После запуска тестового класса я получаю сообщение об ошибке

`Невозможно вызвать "String.isEmpty()", поскольку "parent.path" имеет значение null java.lang.NullPointerException: невозможно вызвать «String.isEmpty()», поскольку «parent.path» имеет значение null в java.base/java.io.File.(File.java:364) в androidx.datastore.DataStoreFile.dataStoreFile(DataStoreFile.kt:36) в androidx.datastore.preferences.PreferenceDataStoreFile.preferencesDataStoreFile(PreferenceDataStoreFile.kt:38) в androidx.datastore.preferences.PreferenceDataStoreSingletonDelegate$getValue$1$1.invoke(PreferenceDataStoreDelegate.kt:107) в androidx.datastore.preferences.PreferenceDataStoreSingletonDelegate$getValue$1$1.invoke(PreferenceDataStoreDelegate.kt:106) в androidx.datastore.preferences.core.PreferenceDataStoreFactory$create$delegate$1.invoke(PreferenceDataStoreFactory.kt:69)` Как это решить? Любая помощь будет оценена

Я пытался имитировать настройки, проверял исключение, но не смог его найти
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»