Burlarse del campo final con Kotlin

Soy novato en Kotlin, Mockito. El código siguiente tiene un error que es causado por el engine , un campo inmutable que no se burla.

Pasé mucho time tratando de resolver este problema. Encontré que una forma de burlarse funciona, hasta que no entiendo y no lo satisfago.

  1. mover un campo al constructor class Car(val engine: Engine) { ... }
  2. cambiar a campo mutable private var engine = Engine()

¿Hay alguna otra manera?

 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) } } 

enter image description here