我有一个简单的类,其中包含一个私有字段。
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。
然而,对于私有方法,它却像魔术一样运行良好。我能够在这个逻辑中测试私有方法。