摘要:
Asp.net MVC 3 应用程序中,单元测试对项目的质量意义重大。除了对Model,Controller进行单元测试,有时还需要对View也进行。对View进行测试目前并不容易做,大多数情况下可能做的是BlackBox测试。现在可以使用Razor Generator简化对Razor View单元测试。你可以从这里安装 VS2010的扩展。 然后在VIEW上右键属性,... 阅读全文
摘要:
有时程序使用HttpWebRequest与HttpWebResponse实现HTTP的访问,但我们想测试它们不太容易实现。现在我们可以使用Moles框架来实现对它的单元测试。如果您还不了解Moles,可以先到官方网站看这个文档。下面我们来看片段代码: [TestMethod][HostType("Moles")][Description("Testing with... 阅读全文
摘要:
一般我们可以使用ref,out达到向外传递参数目的。 Action<T>是一个特殊的委托,除了常规应用。我们还可以用它来实现简单地向外传递参数。直接看下面的UnitTest代码: 1: [TestMethod] 2: public void PassOutParametersUsingDelegate() 3: { 4: ... 阅读全文
摘要:
在Asp.net MVC 3 Web开发中,我们会大量使用各种ajax请求,针对ajax请求如何结何server端如何做异常处理呢?我们可以扩展ActionFilterAttribute,实现一个Ajax异常处理特性。假设您是使用JQuery脚本开发来实现Ajax,看代码: 1: #region AjaxExceptionAttribute 2: /... 阅读全文
摘要:
Cross-Site Request Forgery (CSRF) 是我们Web站点中常见的安全隐患。 下面我们在Asp.net MVC3 来演示一下。 例如我们有一个HomeContoller中一个Submit Action,我们标记了Http Post[HttpPost]public ActionResult Submit(FormCollection fc){ if (!string.IsNullOrEmpty(fc["Title"])) { ViewBag.Message = "Submit success!"; return View(&quo 阅读全文
摘要:
首先,从CodePlex下载源码。 解压后编译一下,然后在我们要调试的Solution中开发那下面的项目: System.Web.Mvc System.Web.Helpers System.Web.WebPages System.Web.Razor System.Web.WebPages.Razor 同时也删除原来以上程序集原来的引用... 阅读全文
摘要:
延迟加载主要应用在以下场景: 数据层 – ADO.NET或Entity Framework等ORM反射 – 加载assemblies, types, MEF 缓存对象,领域实体 下面以领域实体为例, 在实体中我们经常检查某个属性下字段是否为空引用. 如果是空的话,计算或填充这个字段. 像这样: 1: /// <summary> 2: /// Order 3:... 阅读全文
摘要:
数据访问层在分层结构,比较常见. 有时可能是数据访问模块. 假设数据访问层后端是数据库,那我们如何测试他们的呢? 有时实际这种测试是集成测试了.有时数据库里还有一些逻辑,触发器,约束等. 个人十分不建议把业务逻辑放在数据库里实现. 最常见的数据库表的操作create, read, update和delete(简称CRUD), 例如我们需要测试某个Add方法,在这个测试方法完成后, 希望这条测试数... 阅读全文
摘要:
Asp.net的NamePipe机制给我们提供了很多扩展性. 使用HttpModule我们可能实现的有: 强制站点范围的Cookie策略 集中化监控与日志 编写设置与删除HTTP头 控制response输出,如删除多余空白字符 Session管理 认证与受权 下面我们来看如何实现自定义异常处理: 1: public class ErrorModule:IHttpModule 2... 阅读全文
摘要:
当我们压缩我的Response后再传到Client端时,可以明显节省宽带. 提升Site的性能. 现在的浏览器大部分都支持Gzip,Deflate压缩. 同时我们还可以删除一些空白段,空行,注释等以使得HTML文档的尺寸变得更小. 让我们先来实现压缩与删除空白类, 继承自Stream类: 1: /// <summary> 2: /// CompressWhitesp... 阅读全文