Возможно ли издеваться над аксессуарами от 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")
}