Spyk с родовым - PullRequest
       9

Spyk с родовым

0 голосов
/ 01 июня 2018

Я хочу использовать spyk для класса с generic.Это производит StackOverflowError.Невозможно использовать каждые {childClazz.foobar (просмотр)}, просто запускает и super.foobar (просмотр) , безусловно, необходимо вызвать

class SpyTest{
    @Test
    fun  callFoobar(){
        val view = mockk<SomeView>()
        val childClazz = spyk(ChildClazz(), recordPrivateCalls = true)
        childClazz.foobar(view)
        assertk.assert(childClazz.called).isEqualTo(true)
    }
}

private interface ParentView

private interface SomeView : ParentView

private interface ParentInterface<V : ParentView> {

    fun foobar(view: V)
}

private abstract class ParentClazz<V : ParentView> : ParentInterface<V> {

    override fun foobar(view: V) {

    }
}

private class ChildClazz : ParentClazz<SomeView>() {

    var called: Boolean = false

    override fun foobar(view: SomeView) {
        super.foobar(view)
        called = true
    }
} 

Здесьтакое трассировка стека:

java.lang.StackOverflowError
    at java.lang.Class.getDeclaredMethod(Class.java:2127)
    at java.lang.Object.equals(Object.java:149)
    at kotlin.jvm.internal.Intrinsics.areEqual(Intrinsics.java:164)
    at kotlin.reflect.jvm.internal.KClassCacheKt.getOrCreateKotlinClass(kClassCache.kt:36)
    at kotlin.reflect.jvm.internal.ReflectionFactoryImpl.getOrCreateKotlinClass(ReflectionFactoryImpl.java:45)
    at kotlin.jvm.internal.Reflection.getOrCreateKotlinClass(Reflection.java:61)
    at kotlin.jvm.JvmClassMappingKt.getKotlinClass(JvmClassMapping.kt:91)
    at io.mockk.impl.instantiation.JvmMockFactoryHelper.toDescription(JvmMockFactoryHelper.kt:55)
    at io.mockk.impl.instantiation.JvmMockFactoryHelper.access$toDescription(JvmMockFactoryHelper.kt:13)
    at io.mockk.impl.instantiation.JvmMockFactoryHelper$mockHandler$1.invoke(JvmMockFactoryHelper.kt:17)
    at io.mockk.impl.instantiation.JvmMockFactoryHelper$mockHandler$1.invoke(JvmMockFactoryHelper.kt:13)
    at io.mockk.impl.instantiation.JvmMockFactoryKt$sam$MockKInvocationHandler$4dff1f07.invocation(JvmMockFactory.kt)
    at io.mockk.proxy.MockKCallProxy.call(MockKCallProxy.java:24)
    at com.app.ChildClazz.foobar(SimpleTest.kt:62)
    at com.app.ChildClazz.foobar(SimpleTest.kt:55)
    at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)

Можно ли здесь использовать spyk ?Мне это нужно для частных методов.

...