Dee*_*nky 14 asp.net asp.net-mvc unit-testing
我刚刚开始学习ASP.NET MVC.将ASP.NET MVC与Web窗体进行比较时,MVC的主要优势之一就是更好地支持单元测试.我可以很好地解释它如何得到更好的支持吗?
编辑:如果可能请在两者中提供示例.
wom*_*omp 12
Asp.Net MVC有一个主要的原因更好的单元测试支持-整个架构建成使用HttpContextBase
,HttpRequestBase
和HttpResponseBase
.
Asp.Net webforms依赖于HttpContext.Current
,它是一个你无法控制的单例 - 它被设置并作为HttpApplication
执行请求的一部分传递给你的页面.在大多数情况下,为了使页面正确执行,您需要在实际中执行它HttpContext
.由于HttpContext的许多属性都不可设置(如请求和响应),因此构造虚假请求以发送到页面对象非常困难.
这使得单元测试webforms页面成为一场噩梦,因为它将所有测试与需要各种上下文设置相结合.
与ASP.Net MVC形成对比,您可以在其中模拟 HttpContext!现在,您的代码甚至不需要Web服务器来为其提供上下文,您只需设置所需的位,并将模拟的上下文交给您的方法.
ASP.NET页面生命周期使得单元测试类的单元化变得非常困难Page
,这些类从多个职责开始,并在向其添加应用程序逻辑时成为神对象.更糟糕的是,它隐藏了对静态类的依赖,并且需要一个默认的无参数构造函数,这限制了您注入依赖项的能力.
因此,要使一个ASP.NET Web窗体页面可测试,你需要采取的所有逻辑移出代码的屁股,并把它放在另一个类-通常是主持人作为模型-视图-演示模式.
ASP.NET MVC控制器已经与其模板分离,并且不受ASP.NET页面生命周期的阻碍.
归档时间: |
|
查看次数: |
2132 次 |
最近记录: |