... 绝对没有?
它分别为ASP.NET WebForms和ASP.NET MVC填充了哪些部分?
你能以某种方式创建一个使用System.Web.Abstractions的ASP.NET*基础应用程序,以便它可以在两种ASP.NET Web应用程序中使用吗?
在这种情况下,他们是如何将System.Web.Abstractions中的类重新调整回ASP.NET WebForms的呢?
你不能从命名空间中新建对象,所以它不能用于模拟,可以吗?
更新:很抱歉没有明确我知道测试HttpContext和其他构建ASP.NET对象的问题.但无论如何,谢谢你的好解释.
命名空间包含用于包装ASP.NET核心类的类型(例如HttpSessionState).
什么,你想知道为什么?
许多这些核心ASP.NET类都是密封的或静态的,因此无法破坏它们与代码之间的依赖关系.这意味着您无法模拟这些核心依赖项,从而使测试ASP.NET代码变得更加困难.因此,不是直接在代码中直接操作HttpResponse,而是通过HttpResponseWrapper对其进行操作,在测试期间,您可以通过存根或模拟来控制HttpResponse对象的行为方式.
如果您曾经考虑过创建这些包装器,或者之前已经实现过一个或两个包装器,那么您就会知道该命名空间中包含了大量工作,而且我很高兴他们这样做了.
这确实是为了嘲笑. - HttpContext是一个密封的类,不能(轻易)嘲笑.HttpContextBase没有密封,我相信它的方法是虚拟的,使得模拟更容易.
虽然您无法新建HttpContextBase的实例(例如,在WebForms中使用),但您可以通过以下方式获取实例:
var ctx = new HttpContextWrapper(HttpContext.Current);