Я создал методы Get/Set HttpContext Session в классе BaseController, а также Mocked HttpContextBase и создал методы Get/Set.
Каков наилучший способ его использования.
    HomeController : BaseController
    {
        var value1 = GetDataFromSession("key1") 
        SetDataInSession("key2",(object)"key2Value");
        Or
        var value2 = SessionWrapper.GetFromSession("key3");
        GetFromSession.SetDataInSession("key4",(object)"key4Value");
    }
   public class BaseController : Controller
   {
       public  T GetDataFromSession<T>(string key)
       {
          return (T) HttpContext.Session[key];
       }
       public void SetDataInSession(string key, object value)
       {
          HttpContext.Session[key] = value;
       }
   }
Или
  public class BaseController : Controller
  {
     public ISessionWrapper SessionWrapper { get; set; }
     public BaseController()
     {
       SessionWrapper = new HttpContextSessionWrapper();
     }
  }
  public interface ISessionWrapper
  {
     T GetFromSession<T>(string key);
   void    SetInSession(string key, object value);
  }
  public class HttpContextSessionWrapper : ISessionWrapper
  {
     public  T GetFromSession<T>(string key)
     {
        return (T) HttpContext.Current.Session[key];
     }
     public void SetInSession(string key, object value)
     {
         HttpContext.Current.Session[key] = value;
     }
  }
