public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { if (objectMethodsGuru.isEqualsMethod(method)) { return proxy == args[0]; } else if (objectMethodsGuru.isHashCodeMethod(method)) { return hashCodeForMock(proxy); } else if (acrossJVMSerializationFeature.isWriteReplace(method)) { return acrossJVMSerializationFeature.writeReplace(proxy); } MockitoMethodProxy mockitoMethodProxy = createMockitoMethodProxy(methodProxy); new CGLIBHacker().setMockitoNamingPolicy(methodProxy); MockitoMethod mockitoMethod = createMockitoMethod(method); CleanTraceRealMethod realMethod = new CleanTraceRealMethod(mockitoMethodProxy); Invocation invocation = new InvocationImpl(proxy, mockitoMethod, args, SequenceNumber.next(), realMethod); return handler.handle(invocation); }
public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { if (objectMethodsGuru.isEqualsMethod(method)) { return proxy == args[0]; } else if (objectMethodsGuru.isHashCodeMethod(method)) { return hashCodeForMock(proxy); } else if (acrossJVMSerializationFeature.isWriteReplace(method)) { return acrossJVMSerializationFeature.writeReplace(proxy); } MockitoMethodProxy mockitoMethodProxy = createMockitoMethodProxy(methodProxy); cglibHacker.setMockitoNamingPolicy(mockitoMethodProxy); MockitoMethod mockitoMethod = createMockitoMethod(method); FilteredCGLIBProxyRealMethod realMethod = new FilteredCGLIBProxyRealMethod(mockitoMethodProxy); Invocation invocation = new InvocationImpl(proxy, mockitoMethod, args, SequenceNumber.next(), realMethod); return handler.handle(invocation); }
public MockitoMethod createMockitoMethod(Method method) { if (mockSettings.isSerializable()) { return new SerializableMethod(method); } else { return new DelegatingMethod(method); } }
@Test public void shouldCreateSerializableMethodIfIsSerializableMock() throws Exception { MethodInterceptorFilter filter = new MethodInterceptorFilter(handler, (MockSettingsImpl) withSettings().serializable()); Method method = new InvocationBuilder().toInvocation().getMethod(); // when MockitoMethod mockitoMethod = filter.createMockitoMethod(method); // then assertThat(mockitoMethod, instanceOf(SerializableMethod.class)); }
@Test public void shouldCreateJustDelegatingMethodIfIsNotSerializableMock() throws Exception { MethodInterceptorFilter filter = new MethodInterceptorFilter(handler, (MockSettingsImpl) withSettings()); Method method = new InvocationBuilder().toInvocation().getMethod(); // when MockitoMethod mockitoMethod = filter.createMockitoMethod(method); // then assertThat(mockitoMethod, instanceOf(DelegatingMethod.class)); }
/** * Create a new invocation. * * @param mock mocked instance * @param method method invoked * @param arguments arguments to the method * @param superMethod super method * @param sequenceNumber sequence number of the invocation */ InterceptedInvocation(Object mock, MockitoMethod method, Object[] arguments, SuperMethod superMethod, int sequenceNumber) { this.mock = mock; this.method = method; this.arguments = ArgumentsProcessor.expandArgs(method, arguments); this.rawArguments = arguments; this.superMethod = superMethod; this.sequenceNumber = sequenceNumber; location = new LocationImpl(); }
public boolean isToString(MockitoMethod method) { return method.getReturnType() == String.class && method.getParameterTypes().length == 0 && method.getName().equals("toString"); }