public void Should_Order_Aspects_From_Left_To_Right() { var aspectLog = new List<string>(); var serviceLog = new List<string>(); //Given var firstAspect = new FirstAspect(); firstAspect.DoneSomething += (obj, ea) => aspectLog.Add(ea.Message); var secondAspect = new SecondAspect(); secondAspect.DoneSomething += (obj, ea) => aspectLog.Add(ea.Message); var simpleService = new SimpleService(); simpleService.DoneSomething += (obj, ea) => serviceLog.Add(ea.Message); var shouldNotBeCalledAspect = new Mock<IAspect>(MockBehavior.Strict); var advisor = new Advisor(JoinPointDefinition.AttributeBasedJoinPointDefinition, new List<IAspect>() { shouldNotBeCalledAspect.Object, secondAspect, shouldNotBeCalledAspect.Object, firstAspect }); var myService = advisor.GetAdvicedProxy<ISimpleService>(simpleService); //Then var result = myService.DoMore("muchmore"); shouldNotBeCalledAspect.VerifyAll(); Assert.AreEqual(aspectLog.Count, 4); Assert.AreEqual("FirstAspectBefore", aspectLog[0]); Assert.AreEqual("SecondAspectBefore", aspectLog[1]); Assert.AreEqual("SecondAspectAfter", aspectLog[2]); Assert.AreEqual("FirstAspectAfter", aspectLog[3]); }
public void Should_Intercept_Only_Attributed_Methods() { var aspectLog = new List<string>(); var serviceLog = new List<string>(); //Given var aspect = new SimpleAspect(); aspect.DoneSomething += (obj, ea) => aspectLog.Add(ea.Message); var simpleService = new SimpleService(); simpleService.DoneSomething += (obj, ea) => serviceLog.Add(ea.Message); var shouldNotBeCalledAspect = new Mock<IAspect>(MockBehavior.Strict); var advisor = new Advisor(JoinPointDefinition.AttributeBasedJoinPointDefinition, new List<IAspect>() {aspect, shouldNotBeCalledAspect.Object}); var myService = advisor.GetAdvicedProxy<ISimpleService>(simpleService); //Then var result = myService.DoSomething("hallo"); //When Assert.AreEqual(aspectLog[0], "aspectCalled"); Assert.AreEqual(aspectLog[1], "hallo"); Assert.AreEqual(aspectLog[2], "DoneSomething"); Assert.AreEqual(result, "executed"); Assert.AreEqual(serviceLog[0], "hallo"); shouldNotBeCalledAspect.VerifyAll(); }