我有一个带有私有字段的简单类。
class EmployeeData {
private var employeeAge: Int = 0
fun getAge(): Int {
return 1 + employeeAge
}
}
我正在尝试测试这个私有的employeeAge
以下内容来自官方文档
@Test
fun testPrivateAge() {
val mock = spyk(EmployeeData())
every {
mock getProperty "employeeAge"
} propertyType Int::class answers { fieldValue + 6 }
every {
mock setProperty "employeeAge" value any<Int>()
} propertyType Int::class answers { fieldValue += value }
every { mock getProperty "employeeAge" } returns 33
every { mock setProperty "employeeAge" value less(5) } just Runs
assertEquals(10,mock.getAge())
}
我从 MockK 收到这样的异常
io.mockk.MockKException: Missing calls inside every { ... } block.
at io.mockk.impl.recording.states.StubbingState.checkMissingCalls(StubbingState.kt:14)
at io.mockk.impl.recording.states.StubbingState.recordingDone(StubbingState.kt:8)
关于我做错了什么有任何线索吗?官方文档建议对私有属性使用这种技术,但对我来说它不起作用,我正在使用 MockK 的最新版本,它是v1.10.0.
尽管对于私有方法来说它就像一个魅力。我能够按照这个逻辑测试私有方法。
这是一些 Kotlin 优化的问题。根据 MockK 作者的说法,“简要说明。模拟私有属性几乎是不可能的,因为它们没有附加 getter 方法。这是一种 Kotlin 优化,解决方案是重大变化。”
更多信息可以在这 2 个 Github 问题上找到:
- https://github.com/mockk/mockk/issues/263 https://github.com/mockk/mockk/issues/263
- https://github.com/mockk/mockk/issues/104 https://github.com/mockk/mockk/issues/104
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)