当使用 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)