用mock模拟私有财产会引发异常

ore*_*ion 6 kotlin mockk

我在 kotlin 中使用mockk进行测试。但我似乎无法覆盖间谍对象中的私有属性。

我有这个对象

private val driverMapSnapshotMap: MutableMap<Int, SnapshotImage> = mutableMapOf()
Run Code Online (Sandbox Code Playgroud)

在我监视使用的课程中

viewModel = spyk(DriverListViewModel(), recordPrivateCalls = true)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试用模拟值填充它时,我收到错误

every {
    viewModel getProperty "driverMapSnapshotMap"
} returns(mapOf(1 to mockkClass(SnapshotImage::class)))
Run Code Online (Sandbox Code Playgroud)

我得到的错误

io.mockk.MockKException: Missing calls inside every { ... } block.
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

Mis*_*pov 2

模拟私有属性几乎是不可能的,因为它们没有附加 getter 方法。这是 Kotlin 的优化和解决方案的重大变化。

这是针对具有相同问题的问题打开的问题:

https://github.com/mockk/mockk/issues/263

  • 是的,抱歉没有更新,但我最终通过反射自己访问了私有属性 (2认同)