代码之家  ›  专栏  ›  技术社区  ›  Elye

io.mockk.mockkeexception异常:未找到:SavedStateHandle(#1).set(Key,Something)的答案

  •  0
  • Elye  · 技术社区  · 5 年前

    我有一个ViewModel类,如下所示(简化以演示我面临的问题)

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

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

    通过运行测试,我得到以下错误

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

    我想我需要处理这个问题 set SavedStateHandle 也。我怎么能这样做呢 MockK ?

    0 回复  |  直到 5 年前
        1
  •  5
  •   Elye    5 年前

    看来我需要 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") }
    }