我一直都是伪造/嘲讽/碰HttpContext以某种方式在ASP.NET (更容易在ASP.NET 视/单轨铁路).

但是我可以看到,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;
}

所以问题是:

  1. 原因,为什么它不应该被完成。
  2. 原因,为什么它应该做的。
  3. 为什么它不是广泛使用(实际上我不记得任何职位)。

我记得一个职位,在菲尔*哈克建造HttpContext使用反黑客。
但是似乎这仅仅是没有必要的。

干杯,
德米特里.

有帮助吗?

解决方案

这很好对做得非常简单的测试,但是你会怎么单元的测试的一个组成,它使用http请求的.文件?尽我所知没有公共Api允许指定这对SimpleWorkerRequest.甚至如果你能找到一个位置在哪里你可以设置一个HttpFileCollection性,注意其构造内部,所以你甚至不能创建一个实例。

Http请求的.文件不是独自一人在这方面,事实上有可能远远更多的事情你 不能 测试与前HttpContext执行情况比你 可以 测试。这是抽象真的会派上用场。

其他提示

有一对夫妇的情况,以考虑。

情景一:你单元的测试。你有什么小样一类负责管理访问缓存,并呼吁HttpContent.高速缓冲明确。在这种情况下,模拟的背景下,所以你可以看到什么叫正在作出的,无论他们是工作的王你的期望。

方案二:你做的一体化测试,在那里你想测试的东西大像生成的一个复杂的网页。在这种情况下,赋予它真正的HttpContent对象的方式你已经找到。你的集成试验将更好地模拟实际运行时间。

可能的工作,但是...

  • 首先,我看到一些途径,可能在不同环境。
  • 其次它不会需要的东西喜欢IIS安装?
  • 需要多少时间来创建它?如果我有100个测试需要它,它需要1秒,那么这意味着我试运行有关分钟或更长,这导致开发商在运行测试,少。
  • 多么容易你可以嘲笑/设置高速缓存,要求等于创建测的情况吗?

嘲笑/碰是可能更容易。

编辑

发现了一些源码HttpContext和SimpleWorkerRequest在单项目:

那些可以得到更好地了解什么是发生在创建。

发现了一篇文章怎么可能会有所帮助,以及: ASP.NET CreateApplicationHost/SimpleWorkerRequest API孔

这实际上很好地说明了我们需要了解什么是发生在那些目前将它们应用以及它需要时间。嘲笑似乎更容易。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top