【发布时间】:2017-10-11 12:05:36
【问题描述】:
我是 Kotlin 的新手,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)
}
}
【问题讨论】:
-
^ 这个问题和答案应该对你有帮助
-
final 字段是同等对待 final 类还是 final 静态?我怀疑带有 injectMocks 的
car的构造函数问题。
标签: unit-testing mocking mockito kotlin powermock