当前位置:  开发笔记 > 后端 > 正文

System.Web.Abstractions:它有什么用?

如何解决《System.Web.Abstractions:它有什么用?》经验,为你挑选了2个好方法。

... 绝对没有?

它分别为ASP.NET WebFormsASP.NET MVC填充了哪些部分?

你能以某种方式创建一个使用System.Web.Abstractions的ASP.NET*基础应用程序,以便它可以在两种ASP.NET Web应用程序中使用吗?

在这种情况下,他们是如何将System.Web.Abstractions中的类重新调整回ASP.NET WebForms的呢?

你不能从命名空间中新建对象,所以它不能用于模拟,可以吗?

更新:很抱歉没有明确我知道测试HttpContext和其他构建ASP.NET对象的问题.但无论如何,谢谢你的好解释.



1> 小智..:

命名空间包含用于包装ASP.NET核心类的类型(例如HttpSessionState).

什么,你想知道为什么?

许多这些核心ASP.NET类都是密封的或静态的,因此无法破坏它们与代码之间的依赖关系.这意味着您无法模拟这些核心依赖项,从而使测试ASP.NET代码变得更加困难.因此,不是直接在代码中直接操作HttpResponse,而是通过HttpResponseWrapper对其进行操作,在测试期间,您可以通过存根或模拟来控制HttpResponse对象的行为方式.

如果您曾经考虑过创建这些包装器,或者之前已经实现过一个或两个包装器,那么您就会知道该命名空间中包含了大量工作,而且我很高兴他们这样做了.



2> Troy..:

这确实是为了嘲笑. - HttpContext是一个密封的类,不能(轻易)嘲笑.HttpContextBase没有密封,我相信它的方法是虚拟的,使得模拟更容易.

虽然您无法新建HttpContextBase的实例(例如,在WebForms中使用),但您可以通过以下方式获取实例:

var ctx = new HttpContextWrapper(HttpContext.Current);

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有