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