我如何在ASP.Net Web窗体中模拟/伪造会话对象?
|
在创建单元测试时,有没有办法在ASP.Net Web表单中模拟/假的会话对象? 我目前正在将用户详细信息存储在会话变量中,该变量由我的业务逻辑访问. 当隔离测试我的业务逻辑时,会话不可用.这似乎表明一个糟糕的设计(虽然我不确定).业务逻辑层应该首先访问会话变量吗? 如果是这样,那么我将如何用假的对象交换用户的详细信息进行测试? 解决方法在ASP.NET中,由于密码不能创建HttpSessionState的测试双精度.是的,这是ASP.NET原始设计人员的糟糕设计,但并没有太多的事情要做.这是TDD’ers和其他SOLID实践者大部分放弃ASP.NET以支持ASP.NET MVC和其他更可测试框架的原因之一.在ASP.NET MVC中,HTTP会话由抽象的HttpSessionStateBase类建模. 您可以采取类似的方法,让对象在抽象会话中工作,然后在ASP.NET环境中运行时包装真正的HttpSessionState类.根据具体情况,您甚至可以从System.Web.Abstractions重新使用类型,但是如果没有,您可以定义自己的类型. 在任何情况下,您的业务逻辑是您的域模型,并且应该独立于任何特定的运行时技术进行建模,所以我会说,它不应该首先访问会话对象. 如果您绝对需要使用测试双打来进行涉及HttpSessionState的单元计算机,那么仍然可以使用某些入侵的动态模拟,例如TypeMock或Moles,尽管它们还具有很多缺点(参见this comparison of dynamic mocks). (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何使用Durandal.js,mvc3部分视图
- asp.net-mvc-3 – 具有多个强类型部分视图的MVC 3 Razor表格
- asp.net – 防止VB.NET中的属性序列化
- 过期输出缓存ASP.Net MVC
- asp.net – 冻结标题,滚动GridView
- asp.net – SQL Server 2005 – 您应该多久重建一次索引?
- asp.net-mvc – 在MVC3中下载Azure Blob文件
- 使用Asp.net Mvc3 Razor视图方式扩展JQuery UI Widgets方法
- 如何使用Server.MapPath来获取ASP.NET中的网站文件夹外的位
- Asp.net服务器端代码块说明
- asp.net – 如何检测用户操作系统
- asp.net-mvc – 在VS2012中调试MVC应用程序尝试启
- asp.net – NHibernate – ManagedWebSessionCon
- asp.net – 偶尔获取SqlException:超时过期
- 身份验证 – 向webapi承载令牌添加额外的详细信息
- asp.net-mvc-3 – 如何使用下拉列表的数据注释?
- asp.net-mvc – 使用自定义ASP.NET MVC IValuePr
- asp.net – 如何拒绝用户访问子文件夹和文件?
- 在ASP.net中模拟HttpSessionState进行单元测试
- asp.net-mvc – 从MVC Controller导出到CSV,View
