In ASP.NET MVC 3, Microsoft has made unit testing controller actions quite easy. Generally you follow 3 basic steps:
- setup your dependencies
- call the controller action you want to test
- assert something on the properties(usually the Model property) of the returned ActionResult derived object.
However there still is a pain point when the action under test makes use of so called ASP.NET intrinsic objects (Request, Response, Session, Cache, Server etc.) which are hold in the HttpContext instance.