use of org.mockito.invocation.MockHandler in project mockito by mockito.
the class AbstractByteBuddyMockMakerTest method should_allow_serialization.
@Test
public void should_allow_serialization() throws Exception {
SerializableClass proxy = mockMaker.createMock(serializableSettingsFor(SerializableClass.class, SerializableMode.BASIC), dummyHandler());
SerializableClass serialized = SimpleSerializationUtil.serializeAndBack(proxy);
assertThat(serialized).isNotNull();
MockHandler handlerOne = mockMaker.getHandler(proxy);
MockHandler handlerTwo = mockMaker.getHandler(serialized);
assertThat(handlerOne).isNotSameAs(handlerTwo);
}
use of org.mockito.invocation.MockHandler in project mockito by mockito.
the class MockUtil method resetMock.
public static void resetMock(Object mock) {
MockHandler oldHandler = getMockHandler(mock);
MockCreationSettings settings = oldHandler.getMockSettings();
MockHandler newHandler = createMockHandler(settings);
mock = resolve(mock);
mockMaker.resetMock(mock, newHandler, settings);
}
use of org.mockito.invocation.MockHandler in project mockito by mockito.
the class MockUtil method createMock.
public static <T> T createMock(MockCreationSettings<T> settings) {
MockHandler mockHandler = createMockHandler(settings);
Object spiedInstance = settings.getSpiedInstance();
T mock;
if (spiedInstance != null) {
mock = mockMaker.createSpy(settings, mockHandler, (T) spiedInstance).orElseGet(() -> {
T instance = mockMaker.createMock(settings, mockHandler);
new LenientCopyTool().copyToMock(spiedInstance, instance);
return instance;
});
} else {
mock = mockMaker.createMock(settings, mockHandler);
}
return mock;
}
use of org.mockito.invocation.MockHandler in project mockito by mockito.
the class AbstractByteBuddyMockMakerTest method should_mocks_have_different_interceptors.
@Test
public void should_mocks_have_different_interceptors() throws Exception {
SomeClass mockOne = mockMaker.createMock(settingsFor(SomeClass.class), dummyH());
SomeClass mockTwo = mockMaker.createMock(settingsFor(SomeClass.class), dummyH());
MockHandler handlerOne = mockMaker.getHandler(mockOne);
MockHandler handlerTwo = mockMaker.getHandler(mockTwo);
assertThat(handlerOne).isNotSameAs(handlerTwo);
}
use of org.mockito.invocation.MockHandler in project powermock by powermock.
the class MockitoMethodInvocationControl method performIntercept.
private Object performIntercept(MethodInterceptorFilter invocationHandler, final Object interceptionObject, final Method method, Object[] arguments) throws Throwable {
MockHandler mockHandler = invocationHandler.getHandler();
final CleanTraceRealMethod cglibProxyRealMethod = new CleanTraceRealMethod(new RealMethod() {
private static final long serialVersionUID = 4564320968038564170L;
@Override
public Object invoke(Object target, Object[] arguments) throws Throwable {
/*
* Instruct the MockGateway to don't intercept the next call.
* The reason is that when Mockito is spying on objects it
* should call the "real method" (which is proxied by Mockito
* anyways) so that we don't end up in here one more time which
* causes infinite recursion. This should not be done if the
* interceptionObject is a final system class because these are
* never caught by the Mockito proxy.
*/
final Class<?> type = Whitebox.getType(interceptionObject);
final boolean isFinalSystemClass = type.getName().startsWith("java.") && Modifier.isFinal(type.getModifiers());
if (!isFinalSystemClass) {
MockRepository.putAdditionalState(MockGateway.DONT_MOCK_NEXT_CALL, true);
}
try {
return method.invoke(target, arguments);
} catch (InvocationTargetException e) {
SafeExceptionRethrower.safeRethrow(e.getCause());
}
return null;
}
});
Invocation invocation = new InvocationImpl(interceptionObject, new DelegatingMethod(method), arguments, SequenceNumber.next(), cglibProxyRealMethod, new LocationImpl()) {
private static final long serialVersionUID = -3679957412502758558L;
@Override
public String toString() {
return new ToStringGenerator().generate(getMock(), getMethod(), getArguments());
}
};
try {
return replaceMatchersBinderIfNeeded(mockHandler).handle(invocation);
} catch (NotAMockException e) {
if (invocation.getMock().getClass().getName().startsWith("java.") && MockRepository.getInstanceMethodInvocationControl(invocation.getMock()) != null) {
return invocation.callRealMethod();
} else {
throw e;
}
} catch (MockitoAssertionError e) {
InvocationControlAssertionError.updateErrorMessageForMethodInvocation(e);
throw e;
}
}
Aggregations