是否无法对惰性属性设置期望?

Joh*_*nny 5 mockito kotlin

下面的测试产生一个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" }
    }
}
Run Code Online (Sandbox Code Playgroud)

mfu*_*n26 7

在您的示例中,AA.bbfinalfinal/ private/ equals()/hashCode()方法不能存根/通过验证的Mockito。您需要标记bbopen

open class AA(){
    open val bb by lazy { "cc" }
}
Run Code Online (Sandbox Code Playgroud)

您也可以考虑使用nhaarman/mockito-kotlin: Using Mockito with Kotlin。例如:

class GarbTest {
    @Test
    fun xx() {
        val aa = mock<AA>() {
            on { bb } doReturn "zz"
        }
    }

    open class AA() {
        val bb: String = "cc"
    }
}
Run Code Online (Sandbox Code Playgroud)