2016-11-14 5 views
4

Возможно ли издеваться с геттером и сеттером объекта 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

Я не считаю, что насмешливый сеттер полезен, если вы насмехаетесь с геттером, поэтому, пожалуйста, укажите пример. – IRus

ответ

6

издеваться добытчика просто написать:

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

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

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

Что делать, если 'qq' lateinit var –

+1

@RachitMishra позволяет вымывать окончательные методы, и вы сможете издеваться над lateinit. См. Http://static.javadoc.io/org.mockito/mockito-core/2.11.0/org/mockito/Mockito.html#Mocking_Final – IRus

+0

Я делаю это, но все же он не работает. Я использую последний mockito 2.0 +, так это то, что это не будет работать с powermock. –

0

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

val m = mock<Ddd> { 
    on { qq } doReturn "mocked!" 
} 
Смежные вопросы