【发布时间】:2020-08-30 07:56:36
【问题描述】:
我有一个带有私有字段的简单类。
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。
虽然对于私有方法来说,它的工作原理很吸引人。我可以在这个逻辑中测试私有方法。
【问题讨论】:
-
此解决方案可能有效:stackoverflow.com/a/65786951/3753943
-
也看到了这个问题!
标签: android unit-testing testing mockk