@Test
public void successful() {
SpanStore spanStore = new SpanStore();
Object[] parameters = new Object[] { new Object(), new Object(), httpContext, mock(FutureCallback.class) };
when(runtimeLinker.createProxy(eq(FutureCallbackProxy.class), Mockito.<FutureCallbackProxy> any(), Mockito.<ClassLoader> any())).thenReturn(futureCallback);
when(httpContext.getAttribute(SpanStoreAdapter.Constants.ID)).thenReturn(spanStore);
ArgumentCaptor<FutureCallbackProxy> proxyCaptor = ArgumentCaptor.forClass(FutureCallbackProxy.class);
Object result = hook.beforeBody(METHOD_ID, object, parameters, ssc);
verify(runtimeLinker).createProxy(eq(FutureCallbackProxy.class), proxyCaptor.capture(), Mockito.<ClassLoader> any());
verifyNoMoreInteractions(runtimeLinker, httpContext);
verifyZeroInteractions(ssc, object, futureCallback, httpContext);
assertThat(result, is(nullValue()));
assertThat(parameters[3], is(theInstance((Object) futureCallback)));
}