【问题标题】:Is it not possible to set expectations on a lazy property?不能对惰性属性设定期望吗?
【发布时间】:2016-09-01 16:08:32
【问题描述】:

以下测试产生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" }
    }
}

【问题讨论】:

    标签: mockito kotlin


    【解决方案1】:

    在您的示例中,AA.bbfinalfinal/private/equals()/hashCode() 方法不能被 Mockito 存根/验证。您需要将bb 标记为open

    open class AA(){
        open val bb by lazy { "cc" }
    }
    

    您也可以考虑使用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"
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多