Я новичок в Котлине, Мокито. В приведенном ниже коде есть ошибка, вызванная engine
, неизменяемым полем, которое не имитируется.
Я потратил много времени, пытаясь решить эту проблему. Я обнаружил, что способ насмешки работает, пока я не понимаю и не удовлетворяю это.
- переместить поле в конструктор.
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)
}
}