Ошибка. Невозможно вызвать «String.isEmpty()», поскольку «parent.path» имеет значение null для функций хранилища данных ⇐ Android
Ошибка. Невозможно вызвать «String.isEmpty()», поскольку «parent.path» имеет значение null для функций хранилища данных
Я пишу тестовый класс, используя платформу 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)` Как это решить? Любая помощь будет оценена
Я пытался имитировать настройки, проверял исключение, но не смог его найти
Я пишу тестовый класс, используя платформу 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)` Как это решить? Любая помощь будет оценена
Я пытался имитировать настройки, проверял исключение, но не смог его найти
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
JUnit4 TextUtils.isEmpty() дает другой результат, чем String.isEmpty()
Anonymous » » в форуме Android - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Невозможно вызвать «String.length()», поскольку «<параметр1>» имеет значение NULL.
Anonymous » » в форуме Android - 0 Ответы
- 119 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Невозможно вызвать «String.length()», поскольку «<параметр1>» имеет значение NULL.
Anonymous » » в форуме Android - 0 Ответы
- 121 Просмотры
-
Последнее сообщение Anonymous
-