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.