public void ThrowsForNonIMocked() { var behavior = new MockTrackingBehavior(); Assert.Throws <ArgumentException>(() => behavior.Invoke(new MethodInvocation( new object(), typeof(Mocked).GetProperty(nameof(IMocked.Mock)).GetGetMethod()), null)); }
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); }
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); }
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)); }
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); }
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); }
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); }