2016-11-14 64 views
4

是否有可能通過Mockito模擬吸氣劑和二手產品?事情是這樣的:Mockito可以在Kotlin中模擬訪問器嗎?

@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

如果你嘲笑getter,我並不覺得嘲笑setter有用,所以請提供一個例子。 – 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!" 
} 
相關問題