鉴于此,您如何HttpModule
在 asp.net 中对a 进行单元测试HttpApplication
并且HttpContext
不实现接口?
3 回答
本质上你需要去掉 HttpModule 对 HttpApplication 和 HttpContext 的依赖,用一个接口代替它们。您可以创建自己的 IHttpApplication 和 IHttpContext(以及 IHttpResonse、IHttpRequest 等)或使用@Dale Ragan 提到的那些或使用与 asp.net mvc 预览捆绑在一起的 System.Web.Abstractions 中闪亮的新的。
过去,在迁移到 ASP.NET MVC 之前,我使用Phil Haack 创建的这个库,用于对任何使用 HttpApplication 和 HttpContext 的东西进行单元测试。它反过来使用了Duck Typing 库。
不幸的是,这是最好的方法。ASP.NET 并非易于测试。当他们在 ASP.NET MVC 上工作时,目标之一是通过使框架更具可测试性来摆脱这些令人头疼的问题。
您可以使用隔离(模拟)框架。我知道有两个工具可以让你伪造/模拟任何 .NET 对象 - Typemock Isolator和Telerik JustMock我认为你也可以使用Moles。
如果任何 .NET 对象事件没有实现接口,甚至没有公共 c'tor,以上所有这些都将使您能够伪造任何 .NET 对象事件。