2016-11-14 8 views
4

Ist es möglich, Gockler und Setter der Eigenschaft von Mockito zu verspotten? Etwas wie folgt aus:Ist es möglich, in Kotlin Mockitos Accessoren zu verspotten?

@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

Ich finde nicht, dass Spott-Set nützlich ist, wenn Sie Getter verspotten, also geben Sie bitte ein Beispiel an. – IRus

Antwort

6

verspotten Getter schreiben Sie einfach:

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

auch ich schlage vor, mockito-kotlin zu verwenden, nützliche Erweiterungen und Funktionen wie whenever zu verwenden:

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

Was ist, wenn 'qq' spateinit var –

+1

@RachitMishra ermöglicht verspotten finalen Methoden, und Sie werden Latetinit verspotten können. Siehe http://static.javadoc.io/org.mockito/mockito-core/2.11.0/org/mockito/Mockito.html#Mocking_Final – IRus

+0

Ich mache das, aber es funktioniert immer noch nicht so. Ich benutze das neueste Mockito 2.0 +, ist es, dass dies nicht mit PowerMock funktioniert. –

0

Ergänzung IRUS' Antwort, Sie könnten auch die folgende Syntax verwenden:

val m = mock<Ddd> { 
    on { qq } doReturn "mocked!" 
} 
Verwandte Themen