К счастью, команда ASP.Net подумала об этом перед тем, как начать работу с MVC, и создала пространство имен System.Web.Abstractions. Это серия базовых классов, которые отражают статические классы, которые невозможно традиционно тестировать, как класс HttpWebRequest.
То, что вы хотите сделать, - это положиться на один из этих базовых классов и выполнить небольшое внедрение зависимости, чтобы эффективно смоделировать сеанс.
HttpSessionStateBase _session;
public HttpSessionStateBase Session
{
get{
return _session ?? (_session = new HttpSessionStateWrapper(HttpContext.Current.Session));
}
set{
_session = value;
}
}
Что касается FormCollection, вам не нужно ее высмеивать, так как вы должны иметь возможность создать ее отдельно от HttpContext. Хороший пример тому есть в блоге Маркуса Хаммарберга .