Class MockitoMethodInvocationControl<T>

java.lang.Object
org.powermock.api.mockito.invocation.MockitoMethodInvocationControl<T>
All Implemented Interfaces:
InvocationHandler, DefaultBehavior, MethodInvocationControl

public class MockitoMethodInvocationControl<T> extends Object implements MethodInvocationControl
A Mockito implementation of the MethodInvocationControl interface.
  • Field Details

    • mockedMethods

      private final Set<Method> mockedMethods
    • delegator

      private final Object delegator
    • mockHandlerAdaptor

      private final MockHandlerAdaptor<T> mockHandlerAdaptor
  • Constructor Details

    • MockitoMethodInvocationControl

      public MockitoMethodInvocationControl(Object delegator, T mockInstance, Method... methodsToMock)
      Creates a new instance with a delegator. This delegator may be null (if it is then no calls will be forwarded to this instance). If a delegator exists (i.e. not null) all non-mocked calls will be delegated to that instance.
      Parameters:
      delegator - If the user spies on an instance the original instance must be injected here.
      mockInstance - The actual mock instance. May be null. Even though the mock instance may not be used it's needed to keep a reference to this object otherwise it may be garbage collected in some situations. For example when mocking static methods we don't return the mock object and thus it will be garbage collected (and thus the finalize method will be invoked which will be caught by the proxy and the test will fail because we haven't setup expectations for this method) because then that object has no reference. In order to avoid this we keep a reference to this instance here.
      methodsToMock - The methods that are mocked for this instance. If methodsToMock is null or empty, all methods for the invocationHandler are considered to be
  • Method Details

    • isMocked

      public boolean isMocked(Method method)
      Description copied from interface: MethodInvocationControl
      Determine whether a certain method is mocked by this Invocation Control.
      Specified by:
      isMocked in interface MethodInvocationControl
      Parameters:
      method - The method that should be checked.
      Returns:
      true if the method is mocked, false otherwise.
    • invoke

      public Object invoke(Object mock, Method method, Object[] arguments) throws Throwable
      Specified by:
      invoke in interface InvocationHandler
      Throws:
      Throwable
    • isCanBeHandledByMockito

      private boolean isCanBeHandledByMockito(Method method)
    • hasBeenCaughtByMockitoProxy

      private boolean hasBeenCaughtByMockitoProxy()
    • replay

      public Object replay(Object... mocks)
      Description copied from interface: DefaultBehavior
      Replay the given objects or classes. May throw exception if replay is not needed or not supported.
      Specified by:
      replay in interface DefaultBehavior
      Parameters:
      mocks - The object(s) to replay. May be null.
      Returns:
      the result of the replay (may be null).
    • reset

      public Object reset(Object... mocks)
      Description copied from interface: DefaultBehavior
      Reset the given objects or classes. May throw exception if reset is not needed or not supported.
      Specified by:
      reset in interface DefaultBehavior
      Parameters:
      mocks - The object(s) to replay. May be null.
      Returns:
      the result of the replay (may be null).
    • verifyNoMoreInteractions

      public void verifyNoMoreInteractions()
    • toSet

      private Set<Method> toSet(Method... methods)
    • hasDelegator

      private boolean hasDelegator()
    • getMockHandlerAdaptor

      public MockHandlerAdaptor<T> getMockHandlerAdaptor()