SpyAnnotationEngine
Date: 2015-09-18

org.mockito.internal.configuration

## Class SpyAnnotationEngine

- java.lang.Object
- - org.mockito.internal.configuration.SpyAnnotationEngine

- All Implemented Interfaces:
    AnnotationEngine

      public class SpyAnnotationEngine
      extends java.lang.Object
      implements AnnotationEngine

  Process fields annotated with @Spy.

  Will try transform the field in a spy as with `Mockito.spy()`.

  If the field is not initialized, will try to initialize it, with a no-arg constructor.

  If the field is also annotated with the compatible @InjectMocks then the field will be ignored, The injection engine will handle this specific case.

  This engine will fail, if the field is also annotated with incompatible Mockito annotations.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SpyAnnotationEngine()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Object` | `createMockFor(java.lang.annotation.Annotation annotation, java.lang.reflect.Field field)`
    `void` | `process(java.lang.Class<?> context, java.lang.Object testInstance)` Allows extending the interface to perform action on specific fields on the test class.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SpyAnnotationEngine

          public SpyAnnotationEngine()

  - ### Method Detail

    - #### createMockFor

          public java.lang.Object createMockFor(java.lang.annotation.Annotation annotation,
                                       java.lang.reflect.Field field)

      Specified by:
        `createMockFor` in interface `AnnotationEngine`
      Parameters:
        `annotation` - Annotation
        `field` - Field details

    - #### process

          public void process(java.lang.Class<?> context,
                     java.lang.Object testInstance)

      Description copied from interface: `AnnotationEngine`
      Allows extending the interface to perform action on specific fields on the test class.

      See the implementation of this method to figure out what is it for.

      Specified by:
        `process` in interface `AnnotationEngine`
      Parameters:
        `context` - Class where to extract field information, check implementation for details
        `testInstance` - Test instance