以下测试产生NullPointerException
。难道不能对懒惰的房产设定期望吗?
class GarbTest {
@Test
fun xx(){
val aa = Mockito.mock(AA::class.java)
Mockito.`when`(aa.bb).thenReturn("zz")
}
open class AA(){
val bb by lazy { "cc" }
}
}
答案 0 :(得分:4)
在您的示例中,AA.bb
为final
。 Mockito无法对final
/ private
/ equals()
/ hashCode()
方法进行存根/验证。您需要将bb
标记为open
:
open class AA(){
open val bb by lazy { "cc" }
}
您也可以考虑使用nhaarman/mockito-kotlin: Using Mockito with Kotlin。 e.g:
class GarbTest {
@Test
fun xx() {
val aa = mock<AA>() {
on { bb } doReturn "zz"
}
}
open class AA() {
val bb: String = "cc"
}
}