public void SetsCurrentInvocationAndSetup()
        {
            var target     = new TrackingMock();
            var invocation = new MethodInvocation(target, typeof(TrackingMock).GetMethod(nameof(TrackingMock.Do)));
            var tracking   = new MockContextBehavior();

            Assert.NotNull(tracking.Execute(invocation, () => (m, n) => m.CreateValueReturn(null)));

            Assert.Same(invocation, MockContext.CurrentInvocation);
            Assert.NotNull(MockContext.CurrentSetup);
            Assert.True(MockContext.CurrentSetup.AppliesTo(invocation));
        }
        public void SkipInvocationRecordingIfSetupScopeActive()
        {
            var target     = new TrackingMock();
            var invocation = new MethodInvocation(target, typeof(TrackingMock).GetMethod(nameof(TrackingMock.Do)));
            var tracking   = new MockContextBehavior();

            using (new SetupScope())
            {
                Assert.NotNull(tracking.Execute(invocation, () => (m, n) => m.CreateValueReturn(null)));
            }

            Assert.Empty(target.Mock.Invocations);
        }