单元测试IHttpModule
时间:2020-03-05 18:42:38 来源:igfitidea点击:
鉴于HttpApplication
和HttpContext
没有实现接口,如何在asp.net中对HttpModule
进行单元测试?
解决方案
回答
过去,在转移到ASP.NET MVC之前,我使用了Phil Haack这个库,该库是为使用HttpApplication和HttpContext进行任何内容测试而创建的。反过来,它使用了Duck Typing库。
不幸的是,这是最好的方法。 ASP.NET并非易于测试。当他们使用ASP.NET MVC时,目标之一就是通过使框架更具可测试性来摆脱这些麻烦。
回答
本质上,我们需要删除HttpModule对HttpApplication和HttpContext的依赖,并用一个接口替换它们。我们可以创建自己的IHttpApplication和IHttpContext(以及IHttpResonse,IHttpRequest等),也可以使用@Dale Ragan提及的内容,也可以使用与ASP.NET MVC预览捆绑在一起的System.Web.Abstractions中的闪亮内容。
回答
我们可以使用隔离(模拟)框架。我知道有两个工具可以让我们伪造/模拟任何.NET对象Typemock Isolator和Telerik JustMock,我认为我们也可以使用Moles。
如果没有实现接口甚至没有公共控件,上述所有内容将使我们能够伪造任何.NET对象事件。