I’ve started creating single line observers like this
<?php
class Mycompany_Mymodule_Model_Observer
{
public function someMethod($observer)
{
Mage::helper('mycompany_mymodule/observer')
->someMethod($observer->getCustomer());
}
}
The logic is punted to a helper class. This way the helper receives only the objects it needs (in the example above, customer), and can be tested/developed in isolation from the actual event.
So far it’s working a heck-of-a-lot-better than the selenium tests I used when writing checkout event observers.