0
我是Kotlin,Mockito的新手。下面的代碼有一個錯誤,這是由engine
引起的,這是一個不被模擬的不可變字段。嘲笑Kotlin的最後一場
我花了很多時間試圖解決這個問題。我發現這是一種嘲笑作品的方式,直到我不明白並且不滿足爲止。
- 將一個字段移到構造函數中。
class Car(val engine: Engine) { ... }
- 更改爲可變字段。
private var engine = Engine()
還有別的辦法嗎?
class Car {
private val engine = Engine() // here
var state: String? = null
fun move() {
state = engine.state
}
}
@RunWith(MockitoJUnitRunner::class)
class CarTest {
@Mock private lateinit var mockedEngine: Engine
@InjectMocks private val car = Car()
@Test
fun test() {
`when`.(mockedEngine.state).thenReturn("run")
car.move()
assertEquals("run", car.state)
}
}
[如何模擬最終字段? mockito/powermock](https://stackoverflow.com/questions/23629766/how-to-mock-final-field-mockito-powermock) – crgarridos
可能的重複[如何在Android項目中模擬Java模塊上的Mockito 2的最終課程?](https://stackoverflow.com/questions/43306269/how-to-mock-final-class-with-mockito-2-on-java-module-in-android-project) – zsmb13
^這個問題和答案應該幫助你 – zsmb13