public void Should_Throw_If_Advices_Are_Not_Specified() { var foo = new Foo(); var proxy = new Proxy<IFoo>() .Target(foo) .Intercept(f => f.Go()); //.OnBefore(() => Assert.False(foo.WasExecuted)) Assert.Throws<ProxyInitializationException>(() => proxy.Save()); }
public void Shuold_Throw_If_Target_Does_Not_Exist() { var foo = new Foo(); var proxy = new Proxy<IFoo>() //.Target(foo) //.Intercept(f => f.Go()) .OnBefore(() => Assert.False(foo.WasExecuted)) .OnInvoke(mi => foo.Go()); Assert.Throws<ProxyInitializationException>(() => proxy.Save()); }
public void Can_Intercept_Multiple_Members_Using_Many_Fluent_Instructions() { var ack = 0; var target = new Foo(); var proxy = new Proxy<IFoo>(); proxy.Target(target) .InterceptMethod(f => f.Go()) .OnBefore(() => Assert.Equal(0, ack)) .OnAfter(() => ack++); proxy .InterceptGetter(f => f.Name) .OnBefore(() => Assert.Equal(1, ack)) .OnAfter(() => ack++); proxy .InterceptSetter(f => f.Description) .OnBefore(() => Assert.Equal(2, ack)) .OnAfter(() => ack++); var foo = proxy.Save(); // intercepted foo.Go(); var name = foo.Name; foo.Description = string.Empty; // not intercepted foo.Return(); foo.Name = string.Empty; var desc = foo.Description; Assert.Equal(3, ack); }