public void Can_Callback_OnReturn_And_Replace_Return_Value() { var foo = new Foo(); var proxy = new Proxy<IFoo>() .Intercept(f => f.Return()) .OnInvoke(mi => foo.Return()) .OnReturn((mi, r) => r.Equals(1) ? -1 : -2) .Save(); Assert.Equal(-1, proxy.Return()); Assert.True(foo.WasExecuted); }