Class MockitoMethodInvocationControl

    • Field Detail

      • mockedMethods

        private final java.util.Set<java.lang.reflect.Method> mockedMethods
      • delegator

        private final java.lang.Object delegator
      • mockInstance

        private final java.lang.Object mockInstance
    • Constructor Detail

      • MockitoMethodInvocationControl

        public MockitoMethodInvocationControl​(MethodInterceptorFilter methodInterceptionFilter,
                                              java.lang.Object mockInstance,
                                              java.lang.reflect.Method... methodsToMock)
        Creates a new instance.
        Parameters:
        methodInterceptionFilter - The methodInterceptionFilter to be associated with this instance.
        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 mocked.
      • MockitoMethodInvocationControl

        public MockitoMethodInvocationControl​(MethodInterceptorFilter methodInterceptionFilter,
                                              java.lang.Object delegator,
                                              java.lang.Object mockInstance,
                                              java.lang.reflect.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:
        methodInterceptionFilter - The methodInterceptionFilter to be associated with this instance.
        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 Detail

      • isMocked

        public boolean isMocked​(java.lang.reflect.Method method)
        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.
      • isInVerificationMode

        private boolean isInVerificationMode()
      • getVerificationMode

        private org.mockito.verification.VerificationMode getVerificationMode()
      • getVerificationModeFromMockProgress

        private org.mockito.verification.VerificationMode getVerificationModeFromMockProgress​(org.mockito.internal.progress.MockingProgress mockingProgress)
      • invoke

        public java.lang.Object invoke​(java.lang.Object obj,
                                       java.lang.reflect.Method method,
                                       java.lang.Object[] arguments)
                                throws java.lang.Throwable
        Specified by:
        invoke in interface java.lang.reflect.InvocationHandler
        Throws:
        java.lang.Throwable
      • handleStaticVerification

        private void handleStaticVerification​(java.lang.Class<?> cls)
      • hasBeenCaughtByMockitoProxy

        private boolean hasBeenCaughtByMockitoProxy()
      • performIntercept

        private java.lang.Object performIntercept​(MethodInterceptorFilter invocationHandler,
                                                  java.lang.Object interceptionObject,
                                                  java.lang.reflect.Method method,
                                                  java.lang.Object[] arguments)
                                           throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • replaceMatchersBinderIfNeeded

        private org.mockito.invocation.MockHandler replaceMatchersBinderIfNeeded​(org.mockito.invocation.MockHandler mockHandler)
      • replay

        public java.lang.Object replay​(java.lang.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
        Returns:
        the result of the replay (may be null).
      • reset

        public java.lang.Object reset​(java.lang.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
        Returns:
        the result of the replay (may be null).
      • verify

        public java.lang.Object verify​(java.lang.Object... mocks)
        Description copied from interface: DefaultBehavior
        Verify the given objects or classes. May throw exception if verify is not needed or not supported.
        Specified by:
        verify in interface DefaultBehavior
        Returns:
        the result of the verification (may be null).
      • verifyNoMoreInteractions

        public void verifyNoMoreInteractions()
      • toSet

        private java.util.Set<java.lang.reflect.Method> toSet​(java.lang.reflect.Method... methods)
      • hasDelegator

        private boolean hasDelegator()