Opening up Monorail’s SmartDispatchController for easy unit testing

Monorail’s SmartDispatchController is fantastic.  One small hurdle is testability right out of the box.  For instance, if I have a controller action:

public void Foo()
    Session["somekey"] = new object();
If I want to unit test this action, I need to get at the Session IDictionary.  It’s protected, so I can’t get at it in a unit test to ensure the object was added to session.
Here is a quick way around this problem:
Make your own controller base class that derives from SmartDispatchController.  Then add the following method to the base class:
public new virtual IDictionary Session
    get { return base.Session; }


Now, for testing you can get at the Session property, but at runtime, there is no change.