io.mockk.MockKException: не найден ответ для: SavedStateHandle (# 1) .set (Key, Something) - PullRequest
1 голос
/ 11 апреля 2020

У меня есть класс ViewModel, как показано ниже (упрощенный, чтобы продемонстрировать проблему, с которой я столкнулся)

class MyViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
    init {
        savedStateHandle.set(KEY, "Something")
    }
}

У меня есть класс тестирования MockK, как показано ниже

@Test
fun `test something simple`() {
    val savedStateHandle = mockk<SavedStateHandle>()
    val viewModel = MyViewModel(savedStateHandle)
    verify { savedStateHandle.set(MyViewModel.KEY, "Something") }
}

Запустив тест I получите ошибку ниже

io.mockk.MockKException: no answer found for: SavedStateHandle(#1).set(Key, Something)

Я думаю, мне нужно обработать set для SavedStateHandle. Как я мог сделать это в MockK?

1 Ответ

1 голос
/ 11 апреля 2020

Похоже, мне нужно relaxed = true для моего макета, чтобы он просто возвращал значение по умолчанию.

@Test
fun `test something simple`() {
    val savedStateHandle = mockk<SavedStateHandle>(relaxed = true)
    val viewModel = MyViewModel(savedStateHandle)
    verify { savedStateHandle.set(MyViewModel.KEY, "Something") }
}

Другой вариант - смоделировать возвращаемое значение ...

@Test
fun `test something simple`() {
    val savedStateHandle = mockk<SavedStateHandle>()
    every {savedStateHandle.set(MyViewModel.KEY, "Something") } returns Unit
    val viewModel = MyViewModel(savedStateHandle)
    verify { savedStateHandle.set(MyViewModel.KEY, "Something") }
}
...