Example #1
0
        public void ThrowsForNonIMocked()
        {
            var behavior = new MockTrackingBehavior();

            Assert.Throws <ArgumentException>(() => behavior.Invoke(new MethodInvocation(
                                                                        new object(),
                                                                        typeof(Mocked).GetProperty(nameof(IMocked.Mock)).GetGetMethod()),
                                                                    null));
        }
Example #2
0
        public void RecordsInvocation()
        {
            var behavior = new MockTrackingBehavior();
            var mock     = new Mocked();

            behavior.Invoke(new MethodInvocation(mock, typeof(object).GetMethod(nameof(object.ToString))),
                            () => (m, n) => m.CreateValueReturn(null));

            Assert.Equal(1, mock.Mock.Invocations.Count);
        }
Example #3
0
        public void RecordsInvocation()
        {
            var target     = new TrackingMock();
            var invocation = new MethodInvocation(target, typeof(TrackingMock).GetMethod(nameof(TrackingMock.Do)));
            var tracking   = new MockTrackingBehavior();

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

            Assert.Single(target.Mock.Invocations);
        }
Example #4
0
        public void SetsCurrentInvocationAndSetup()
        {
            var target     = new TrackingMock();
            var invocation = new MethodInvocation(target, typeof(TrackingMock).GetMethod(nameof(TrackingMock.Do)));
            var tracking   = new MockTrackingBehavior();

            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));
        }
Example #5
0
        public void SkipInvocationRecordingIfSetupScopeActive()
        {
            var target     = new TrackingMock();
            var invocation = new MethodInvocation(target, typeof(TrackingMock).GetMethod(nameof(TrackingMock.Do)));
            var tracking   = new MockTrackingBehavior();

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

            Assert.Empty(target.Mock.Invocations);
        }
Example #6
0
        public void WhenAddingMockBehavior_ThenCanInterceptSelectively()
        {
            var calculator = new ICalculatorProxy();
            var behavior   = new MockTrackingBehavior();

            calculator.AddBehavior(behavior);
            calculator.AddBehavior((m, n) => m.CreateValueReturn("Basic"), m => m.MethodBase.Name == "get_Mode");
            calculator.AddBehavior(new DefaultValueBehavior());

            var mode = calculator.Mode;
            var add  = calculator.Add(3, 2);

            Assert.Equal("Basic", mode);
            Assert.Equal(0, add);
        }
Example #7
0
        public async Task WhenAddingMockBehavior_ThenCanInterceptSelectively()
        {
            var calculator = await new DynamicMock(LanguageNames.CSharp).CreateAsync <ICalculator>();
            var behavior   = new MockTrackingBehavior();

            calculator.AddBehavior(behavior);
            calculator.AddBehavior((m, n) => m.CreateValueReturn(CalculatorMode.Scientific), m => m.MethodBase.Name == "get_Mode");
            calculator.AddBehavior(new DefaultValueBehavior());

            var mode = calculator.Mode;
            var add  = calculator.Add(3, 2);

            Assert.Equal(CalculatorMode.Scientific, mode);
            Assert.Equal(0, add);
        }