我是Kocklin的新手,Mockito。下面的代码有一个错误,它是由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)
}
}
答案 0 :(得分:1)
我想你已经回答了你的问题。没有其他好的解决方案。您建议的选项(最好是第一个)是经过适当设计的类,可以测试。