嘲笑Kotlin的最后一场

我是Mockito Kotlin的新手。 下面的代码有一个engine引起的错误,一个不被模拟的不可变字段。

我花了很多时间来解决这个问题。 我发现一种嘲笑的方式,直到我不明白,不满足。

  1. 将一个字段移到构造函数中。 class Car(val engine: Engine) { ... }
  2. 改变为可变字段。 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) } } 

在这里输入图像描述

我想你已经回答了你的问题。 没有其他好的解决方案。 你建议的选项(最好是第一个)是正确设计的类是可测试的。