1
2
3
4
5
6 package mockit.internal.expectations.invocation;
7
8 import edu.umd.cs.findbugs.annotations.NonNull;
9 import edu.umd.cs.findbugs.annotations.Nullable;
10
11 import java.lang.reflect.Constructor;
12 import java.lang.reflect.Member;
13
14 import mockit.internal.BaseInvocation;
15 import mockit.internal.expectations.state.ExecutingTest;
16 import mockit.internal.state.TestRun;
17
18 final class DelegateInvocation extends BaseInvocation {
19 @NonNull
20 private final InvocationArguments invocationArguments;
21
22 DelegateInvocation(@Nullable Object invokedInstance, @NonNull Object[] invokedArguments,
23 @NonNull ExpectedInvocation expectedInvocation, @NonNull InvocationConstraints constraints) {
24 super(invokedInstance, invokedArguments, constraints.invocationCount);
25 invocationArguments = expectedInvocation.arguments;
26 }
27
28 @NonNull
29 @Override
30 protected Member findRealMember() {
31 return invocationArguments.getRealMethodOrConstructor();
32 }
33
34 @Override
35 public void prepareToProceed() {
36 ExecutingTest executingTest = TestRun.getExecutingTest();
37
38 if (getInvokedMember() instanceof Constructor) {
39 executingTest.markAsProceedingIntoRealImplementation();
40 } else {
41 executingTest.markAsProceedingIntoRealImplementation(this);
42 }
43 }
44
45 @Override
46 public void cleanUpAfterProceed() {
47 TestRun.getExecutingTest().clearProceedingState();
48 }
49 }