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); }