public void ExecuteShouldInvokeCommand() { // arrange var pre = new Mock<Action<object>>(); var post = new Mock<Action<object>>(); pre.Setup( f => f( It.IsAny<object>() ) ); post.Setup( f => f( It.IsAny<object>() ) ); var command = new Mock<INotifyCommandChanged>(); command.Setup( c => c.Execute( It.IsAny<object>() ) ).Raises( c => c.Executed += null, EventArgs.Empty ); var interceptor = new CommandInterceptor<object>( pre.Object, post.Object, command.Object ); var raised = false; interceptor.Executed += ( s, e ) => raised = true; // act interceptor.Execute(); // assert pre.Verify( f => f( null ), Times.Once() ); command.Verify( c => c.Execute( null ), Times.Once() ); post.Verify( f => f( null ), Times.Once() ); Assert.True( raised ); }