ZakTaccardi
ZakTaccardi

Reputation: 12467

How can a mock's class not equal its java class in Kotlin?

(activity as HomeActivity).javaClass == HomeActivity::class.java

Returns false. Why? Note, activity is mocked with the following function

fun set(activity: KClass<out Activity>) {
    this.activity = Mockito.mock(activity.java)
}

Upvotes: 1

Views: 522

Answers (1)

klimat
klimat

Reputation: 24991

You probably want to use:

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

The reason is Mockito.mock(HomeActivity.java) will dynamically create a class which implements HomeActivity using SomeFooMockitoImpl.class which gets HomeActivity.class as parameter to create that mocked instance.

You can check in runtime mock object will be something like: HomeActivity$$EnhancerByMockitoWithCGLIB$$b8254f54

and its actual class name by:

activity.javaClass.simpleName (should be SomeFooMockitoImpl)

Upvotes: 5

Related Questions