模拟的类如何在Kotlin中不等于它的java类?

Zak*_*rdi 1 mockito kotlin

(activity as HomeActivity).javaClass == HomeActivity::class.java
Run Code Online (Sandbox Code Playgroud)

退货false.为什么?注意,activity使用以下函数进行模拟

fun set(activity: KClass<out Activity>) {
    this.activity = Mockito.mock(activity.java)
}
Run Code Online (Sandbox Code Playgroud)

kli*_*mat 5

您可能想要使用:

if(activity is HomeActivity) 代替 (activity as HomeActivity).javaClass == HomeActivity::class.java

原因是Mockito.mock(HomeActivity.java)将动态地创建这一个类实现 HomeActivity利用 SomeFooMockitoImpl.class它获取HomeActivity.class作为参数来创建嘲笑实例.

你可以检查运行时模拟对象将是这样的: HomeActivity$$EnhancerByMockitoWithCGLIB$$b8254f54

及其实际的类名:

activity.javaClass.simpleName(应该SomeFooMockitoImpl)