嘲笑Kotlin的最后一场
我是Mockito Kotlin的新手。 下面的代码有一个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) } }
我想你已经回答了你的问题。 没有其他好的解决方案。 你建议的选项(最好是第一个)是正确设计的类是可测试的。