Reputation: 18760
Imagine, I have this line of code:
import org.mockito.Mockito
val mock = Mockito.mock(Sim2ParametersProvider::class.java)
I want to be able to write it like this:
val mock = Sim2ParametersProvider::class.mock()
How do I do this?
I tried
fun <T : kotlin.Any> kotlin.reflect.KClass<T>.mock() = Mockito.mock(this)
but it gives me compiler errors.
Upvotes: 1
Views: 336
Reputation: 317808
It looks like you're slightly mixing up KClass and java Class. The following compiles for me, to extend java classes:
fun <T> Class<T>.mock() = Mockito.mock(this)
val mock1 = FooClass::class.java.mock()
Also the following compiles for me, extending Kotlin KClass:
fun <T: Any> KClass<T>.mock() = Mockito.mock(this.java)
val mock2 = FooClass::class.mock()
Assuming that FooClass is a class, of course.
Upvotes: 4