I replied to your question on SO. I'm also posting the answer here.
It's impossible to mock the delegate invocation itself, since it's implemented internally by the JIT.
You have several alternative options. If you raise the event in a method dedicated for that purpose (as in your sample), then you can simply mock that method instead. So, in your sample that becomes:
Mock.Arrange(() => s.FireEvent()).DoNothing();
If that's not possible then you can mock the method that adds handlers to the event (the one called when Sample += ... is invoked). You can do this like so:
var mock = Mock.Create<Sample>();
// we need this just for the following arrangement
Mock.ArrangeSet(() => mock.TheEvent +=
var real =
// TheEvent += CallMe will now do nothing
// TheEvent is empty<br><br>
Finally, as a third option, you can remove all handlers from the event using reflection at some point where you know the event is just about to be fired, or that no one else will attach to it:
Caveat: this last option is dependent on the compiler implementation. It will work for event declarations in C# code, but will not work for VB events.
// TheEvent is null right now