难道不能对懒惰的房产设定期望吗?

时间:2016-09-01 16:08:32

标签: 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" }
    }
}

1 个答案:

答案 0 :(得分:4)

在您的示例中,AA.bbfinal。 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"
    }
}