【发布时间】:2021-07-12 06:10:20
【问题描述】:
我尝试模拟此函数,但 record 变量始终为空
这是服务中的代码:
val record: LockDatabaseRecord = lockDatabaseRecordService.getTransLockDbRecord(dbRecordId) {
it.lockDatabaseRecordKeys.size
}
这就是我嘲笑它的方式
@Test
fun failedEngageSessionItem() {
val dbVersion = "0x0000001"
val sessionId = UUID.randomUUID()
val dbRecordId = UUID.randomUUID()
val requestDetails = "request details"
val recordDbVersion = "1x"
val lockId = UUID.randomUUID()
val lock = mock(Lock::class.java)
val lockDatabaseRecord = mock(LockDatabaseRecord::class.java)
val lockDatabaseRecordKey = mock(LockDatabaseRecordKey::class.java)
val key = mock(Key::class.java)
`when`(lockService.getTransLock(eq(lockId), any())).thenReturn(lock)
`when`(lockDatabaseRecordService.getTransLockDbRecord(eq(dbRecordId), any())).thenReturn(lockDatabaseRecord)
【问题讨论】:
-
lockDatabaseRecordService也是模拟吗?必须如此,因为您在when语句中定义了它的行为 -
是的!这是一个模拟
-
在您的测试中,您似乎使用 2 个参数调用重载的 getTransLockDbRecord,但代码调用了 1 个参数版本。
标签: unit-testing kotlin mockito