我一直在 ASP.NET 中以某种方式伪造/模拟/存根 HttpContext(在 ASP.NET MVC/MonoRail 中更容易)。
但我可以看到 HttpContext 本身可以轻松构建,只需几行代码即可。
var tw = new StringWriter();
var workerReq = new SimpleWorkerRequest("/webapp", @"c:\here\there\wwwroot", "page.aspx", tw);
var context = new HtpContext(workerReq);
如果我们将此代码包装成这样的代码,它应该可以正常工作,并且我们甚至可以使用它来渲染 ASPX:
using(Simulate.HttpContext()) {
HttpContext.Current.BlaBla;
}
所以问题是:
- 不应该这样做的原因。
- 应该这样做的原因。
- 为什么它没有被广泛使用(事实上我不记得任何关于它的帖子)。
我记得 Phill Haack 在一篇文章中使用 Reflection hack 构建了 HttpContext。
但似乎只是不需要。
Cheers,
德米特里。
进行非常简单的测试很好,但是如何对使用 HttpRequest.Files 的组件进行单元测试?据我所知,没有公共 API 允许您在 SimpleWorkerRequest 上指定这一点。即使您可以找到可以设置 HttpFileCollection 属性的位置,请注意,它的构造函数是内部的,因此您甚至无法创建该类型的实例。
HttpRequest.Files 在这方面并不孤单,事实上,您可能还有更多的东西can't使用当前的 HttpContext 实现进行测试can测试。这就是抽象真正派上用场的地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)