Microsoft уже создала отличные обертки и абстракции вокруг HttpContext
, HttpRequest
и HttpResponse
, которые включены в .NET, поэтому я определенно использовал бы их непосредственно, а не упаковывал их сам.
Вы можете настроить Unity для HttpContextBase
, используя InjectionFactory
, например:
var container = new UnityContainer();
container.RegisterType<HttpContextBase>(new InjectionFactory(_ =>
new HttpContextWrapper(HttpContext.Current)));
Кроме того, если вам нужны HttpRequestBase
(который я чаще всего использую) и HttpResponseBase
, вы можете зарегистрировать их следующим образом:
container.RegisterType<HttpRequestBase>(new InjectionFactory(_ =>
new HttpRequestWrapper(HttpContext.Current.Request)));
container.RegisterType<HttpResponseBase>(new InjectionFactory(_ =>
new HttpResponseWrapper(HttpContext.Current.Response)));
Вы можете легко смоделировать HttpContextBase
, HttpRequestBase
и HttpResponseBase
в модульных тестах без пользовательских оболочек.