Как протестировать SavedStateHandle в Type Safety Navigation Compose?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как протестировать SavedStateHandle в Type Safety Navigation Compose?

Сообщение Anonymous »

Я работаю над проектом Android, в котором используется навигация по типу безопасности (androidx.navigation:navigation-compose:2.8.0-beta05). Я пытаюсь создать тест для проверки значения, передаваемого через SavedStateHandle.
Смотрите мой код:

Код: Выделить всё

// Screen.kt

@Serializable
sealed class Screen {
@Serializable
data class Details(
val movieId: Int,
) : Screen()
}

Код: Выделить всё

// DetailsViewModel.kt

import androidx.navigation.toRoute
import com.paulohc.movlist.navigation.Screen

class DetailsViewModel @Inject constructor(
savedStateHandle: SavedStateHandle,
) : ViewModel() {
val movieId: Int = savedStateHandle.toRoute().movieId
}
Я попробовал следующий тест:

Код: Выделить всё

// DetailsViewModelTest.kt

class DetailsViewModelTest {
private lateinit var detailsViewModel: DetailsViewModel

@BeforeEach
fun setup() {
val savedState = SavedStateHandle(mapOf("movieId" to 10))
detailsViewModel = DetailsViewModel(savedState)
}

@Test
fun getState() {
assertThat(detailsViewModel.movieId).isEqualTo(10)
}
}
Но я столкнулся со следующей ошибкой:

Код: Выделить всё

Method putInt in android.os.BaseBundle not mocked. See https://developer.android.com/r/studio-ui/build/not-mocked for details.
java.lang.RuntimeException: Method putInt in android.os.BaseBundle not mocked. See https://developer.android.com/r/studio-ui/build/not-mocked for details.
Как мне переписать этот тест, чтобы он прошел правильно? Могу ли я высмеять savedStateHandle с помощью макета?

Подробнее здесь: https://stackoverflow.com/questions/788 ... on-compose
Ответить

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

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

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

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

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