Unit testing code that uses HttpContext.Current.Session
来源:互联网 发布:mac u盘不显示 编辑:程序博客网 时间:2024/05/22 17:29
http://www.necronet.org/archive/2010/07/28/unit-testing-code-that-uses-httpcontext-current-session.aspx/
In process of writing unit test for NecroNetToolkit (yes, I know I should have written tests first) I needed to test a proxy class that stores and retrieves values from HttpContext.Current.Session
. It’s kind of pain, because you can’t mock HttpContext
or the session state object. You could in MVC, where controllers have HttpContextBase
, but you can’t do it withHttpContext.Current
. I already had code for instantiating HttpContext
, so I decided to try and ‘Inject’ the session into it.
I used reflector to find out, that the Session property actually returns HttpContext.Items["AspSession"]
. So I created ttpSessionStateContainer
, which is only parameter to HttpSessionState
object. Only problem is that HttpSessionBase
has internal constructors, so a little reflection magic is needed to instantiate it. And it worked! Now I can use HttpContext.Current.Session
(at least to some extent) in unit tests. Here’s the code:
var httpRequest = new HttpRequest("", "http://mySomething/", "");var stringWriter = new StringWriter();var httpResponce = new HttpResponse(stringWriter);var httpContext = new HttpContext(httpRequest, httpResponce);var sessionContainer = new HttpSessionStateContainer("id", new SessionStateItemCollection(), new HttpStaticObjectsCollection(), 10, true, HttpCookieMode.AutoDetect, SessionStateMode.InProc, false);httpContext.Items["AspSession"] = typeof (HttpSessionState).GetConstructor( BindingFlags.NonPublic | BindingFlags.Instance, null, CallingConventions.Standard, new[] {typeof (HttpSessionStateContainer)}, null) .Invoke(new object[]{ sessionContainer});HttpContext.Current = httpContext;
- Unit testing code that uses HttpContext.Current.Session
- HttpContext.Current.Session是什么??
- HttpContext.Current.Session 为null
- HttpContext.Current.Session 和 Session 的区别
- HttpContext.Current.Session为null的问题
- HttpContext.Current
- HttpContext.Current
- HttpContext.Current
- HttpContext.Current
- HttpContext.Current
- Troubleshooting code that uses the HTTP protocol
- System.Web.HttpContext.Current.Session为NULL值的问题?
- System.Web.HttpContext.Current.Session获取值出错
- 关于System.Web.HttpContext.Current.Session 为 null的问题
- System.Web.HttpContext.Current.Session为NULL值的问题?
- abp项目中无法使用HttpContext.Current.Session[""]的问题
- System.Web.HttpContext.Current.Session获取值出错
- Unit Testing
- iOS开发笔记-关于jpeglib和腾讯云sdk 库冲突的解决
- iOS应用数据存储的常用方式
- Android Hook(1) Dexposed原理
- Android Hook(2) Java2java
- 从零学习Swift<1>
- Unit testing code that uses HttpContext.Current.Session
- spring 中文乱码解决办法
- HDU-3127 WHUgirls
- 【感悟】战略上藐视敌人,战术上重视敌人
- MySQL加密函数
- Android应用资源文件格式解析与保护对抗研究
- 软件问题定位的方法(二)
- 每天读一点儿APM(PIX)代码之三:飞行控制
- css div垂直居中