Возможно ли издеваться над аксессуарами от Mockito в Котлине?

Можно ли издеваться над получателем и установщиком свойства Mockito? Что-то вроде этого:

@Test
fun three() {
    val m = mock<Ddd>() {
//        on { getQq() }.doReturn("mocked!")
    }
    assertEquals("mocked!", m.qq)
}
open class Ddd {
     var qq : String = "start"
        set(value) {
            field = value + " by setter"
        }
        get() {
            return field + " by getter"
        }
}

Ответ 1

Чтобы издеваться над получателем, просто напишите:

val m = mock<Ddd>()
`when`(m.qq).thenReturn("42")

также я предлагаю использовать mockito-kotlin, чтобы использовать полезные расширения и функции типа whenever:

val m = mock<Ddd>()
whenever(m.qq).thenReturn("42")

Ответ 2

Дополняя ответ IRus, вы также можете использовать следующий синтаксис:

val mockedObj = mock<SomeClass> {
  on { funA() } doReturn "valA"
  on { funB() } doReturn "valB"
}

или же

val mockedObj = mock<SomeClass> {
  on(it.funA()).thenReturn("valA")
  on(it.funB()).thenReturn("valB")
}