I think mock objects themselves are a 300-level topic. I wish it weren’t so, but from the folks I talk to, the average developer doesn’t use them. Fakes, stubs, mocks (whatever you want to call them – and I know they overlap, and I understand the semantic differences among them) are critical for testing. It’s important to isolate code under test, and in order to do that, we have to fake out other classes the current class talks to. Not all the classes as a rule, but the ones that might give our test unpredictable results.

Phil Haack lays out an example faking an event on an interface. While I prefer to use plain delegates for my view-controller notification, events are multicast delegates, so the work as well. Give it a read.