单元测试IHttpModule

时间:2020-03-05 18:42:38  来源:igfitidea点击:

鉴于HttpApplicationHttpContext没有实现接口,如何在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对象事件。