Search in sources :

Example 1 with IMethodInvocation

use of org.spockframework.runtime.extension.IMethodInvocation in project micronaut-test by micronaut-projects.

the class MicronautSpockExtension method alignMocks.

@Override
protected void alignMocks(IMethodInvocation context, Object instance) {
    for (MethodInjectionPoint injectedMethod : specDefinition.getInjectedMethods()) {
        final Argument<?>[] args = injectedMethod.getArguments();
        if (args.length == 1) {
            final Optional<FieldInfo> fld = context.getSpec().getAllFields().stream().filter(f -> f.getName().equals(args[0].getName())).findFirst();
            if (fld.isPresent()) {
                final FieldInfo fieldInfo = fld.get();
                final Object fieldInstance = fieldInfo.readValue(instance);
                if (fieldInstance instanceof InterceptedProxy) {
                    Object interceptedTarget = ((InterceptedProxy) fieldInstance).interceptedTarget();
                    if (mockUtil.isMock(interceptedTarget)) {
                        fieldInfo.writeValue(instance, interceptedTarget);
                    }
                }
            }
        }
    }
}
Also used : Arrays(java.util.Arrays) InterceptedProxy(io.micronaut.aop.InterceptedProxy) TestContext(io.micronaut.test.context.TestContext) SpecInfo(org.spockframework.runtime.model.SpecInfo) IMethodInvocation(org.spockframework.runtime.extension.IMethodInvocation) Map(java.util.Map) FieldInfo(org.spockframework.runtime.model.FieldInfo) BeanCreatedEventListener(io.micronaut.context.event.BeanCreatedEventListener) Argument(io.micronaut.core.type.Argument) FeatureInfo(org.spockframework.runtime.model.FeatureInfo) Method(java.lang.reflect.Method) Property(io.micronaut.context.annotation.Property) IAnnotationDrivenExtension(org.spockframework.runtime.extension.IAnnotationDrivenExtension) ConcurrentLinkedDeque(java.util.concurrent.ConcurrentLinkedDeque) MockUtil(org.spockframework.mock.MockUtil) List(java.util.List) MethodInjectionPoint(io.micronaut.inject.MethodInjectionPoint) MicronautTestValue(io.micronaut.test.annotation.MicronautTestValue) MethodInfo(org.spockframework.runtime.model.MethodInfo) CollectionUtils(io.micronaut.core.util.CollectionUtils) MicronautTest(io.micronaut.test.extensions.spock.annotation.MicronautTest) Annotation(java.lang.annotation.Annotation) AbstractMicronautExtension(io.micronaut.test.extensions.AbstractMicronautExtension) Optional(java.util.Optional) InvalidSpecException(org.spockframework.runtime.InvalidSpecException) Specification(spock.lang.Specification) Queue(java.util.Queue) Inject(jakarta.inject.Inject) TestPropertyProvider(io.micronaut.test.support.TestPropertyProvider) Argument(io.micronaut.core.type.Argument) InterceptedProxy(io.micronaut.aop.InterceptedProxy) MethodInjectionPoint(io.micronaut.inject.MethodInjectionPoint) FieldInfo(org.spockframework.runtime.model.FieldInfo)

Aggregations

InterceptedProxy (io.micronaut.aop.InterceptedProxy)1 Property (io.micronaut.context.annotation.Property)1 BeanCreatedEventListener (io.micronaut.context.event.BeanCreatedEventListener)1 Argument (io.micronaut.core.type.Argument)1 CollectionUtils (io.micronaut.core.util.CollectionUtils)1 MethodInjectionPoint (io.micronaut.inject.MethodInjectionPoint)1 MicronautTestValue (io.micronaut.test.annotation.MicronautTestValue)1 TestContext (io.micronaut.test.context.TestContext)1 AbstractMicronautExtension (io.micronaut.test.extensions.AbstractMicronautExtension)1 MicronautTest (io.micronaut.test.extensions.spock.annotation.MicronautTest)1 TestPropertyProvider (io.micronaut.test.support.TestPropertyProvider)1 Inject (jakarta.inject.Inject)1 Annotation (java.lang.annotation.Annotation)1 Method (java.lang.reflect.Method)1 Arrays (java.util.Arrays)1 List (java.util.List)1 Map (java.util.Map)1 Optional (java.util.Optional)1 Queue (java.util.Queue)1 ConcurrentLinkedDeque (java.util.concurrent.ConcurrentLinkedDeque)1