单元测试 IHttpModule
Posted
技术标签:
【中文标题】单元测试 IHttpModule【英文标题】:Unit testing IHttpModule 【发布时间】:2010-09-06 17:12:17 【问题描述】:鉴于HttpApplication
和HttpContext
没有实现接口,你如何在asp.net 中对HttpModule
进行单元测试?
【问题讨论】:
【参考方案1】:本质上你需要去掉 HttpModule 对 HttpApplication 和 HttpContext 的依赖,用一个接口代替它们。您可以创建自己的 IHttpApplication 和 IHttpContext(以及 IHttpResonse、IHttpRequest 等)或使用@Dale Ragan 提到的那些或使用 System.Web.Abstractions 中与 asp.net mvc 预览捆绑在一起的闪亮新的。
【讨论】:
你能给我指点@Dale Ragan 的文章吗? PS:我无法访问 Twitter 我实际上指的是直接在这个下面的答案:)【参考方案2】:过去在迁移到 ASP.NET MVC 之前,我使用 this libraryPhil Haack 创建用于单元测试的任何使用 HttpApplication 和 HttpContext 的东西。它反过来使用了Duck Typing library。
不幸的是,这是最好的方法。 ASP.NET 并非易于测试。当他们在 ASP.NET MVC 上工作时,目标之一是通过使框架更具可测试性来摆脱这些令人头疼的问题。
【讨论】:
【参考方案3】:您可以使用隔离(模拟)框架。我知道有两个工具可以让你伪造/模拟任何 .NET 对象 - Typemock Isolator 和 Telerik JustMock 我认为你也可以使用 Moles。
如果任何 .NET 对象事件没有实现接口,甚至没有公共 c'tor,以上所有内容都可以让您伪造。
【讨论】:
以上是关于单元测试 IHttpModule的主要内容,如果未能解决你的问题,请参考以下文章