小编the*_*eba的帖子

具有匿名类字段引用原始(非监视)对象的 Mockk 监视类

当使用 Mockk 监视 Kotlin 或 Java 类时,如果该类有一个匿名类字段(如 View.OnClickListener),则当字段函数引用父类时,不会反映在监视对象上。

具有匿名类字段的示例类:

class MyClass {
    var myString: String? = null
        set(value) {
            println("myString set to ${value?.hashCode()} for ${this@MyClass.hashCode()}")
            field = value
        }

    val myStringWrapper: StringWrapper = object : StringWrapper {
        val timestamp = System.currentTimeMillis()
        override fun setString(string: String) {
            println("myStringWrapper ${this.hashCode()} for ${this@MyClass.hashCode()}")
            myString = string
        }
    }
    
    fun setString(string: String) {
        myString = string
    }

    interface StringWrapper {
        fun setString(string: String)
    }
}
Run Code Online (Sandbox Code Playgroud)

单元测试示例

    @Test
    fun testSpyAndRealMyClassStringWrapper2() {
        val realMyClass = MyClass() …
Run Code Online (Sandbox Code Playgroud)

kotlin mockk

6
推荐指数
0
解决办法
394
查看次数

标签 统计

kotlin ×1

mockk ×1