1

我正在为 log4net 编写一个包装库。这个库应该能够捕获上下文信息,例如查询字符串、cookie、表单字段等。

我从控制台应用程序调用这个包装类,而不是 TDD 类。

有没有办法在控制台应用程序中填充 HttpContext 对象,如下所示?

HttpContext c = new HttpContext(null);
c.Request.QueryString.Keys[1] = "city";
c.Request.QueryString[1] = "Los Angeles";
c.Request.QueryString.Keys[2] = "state";
c.Request.QueryString[2] = "CA";

然后按如下方式检索它?

Console.WriteLine(context.Request.QueryString.Keys[1]);

尝试上述代码时出现以下异常。

Property or indexer 'System.Collections.Specialized.NameObjectCollectionBase.KeysCollection.this[int]' cannot be assigned to -- it is read only 
4

2 回答 2

1

您可以在此处阅读有关使用 Moq 伪造它的信息:http: //o2platform.wordpress.com/2011/04/05/mocking-httpcontext-httprequest-and-httpresponse-for-unittests-using-moq/

于 2012-04-05T22:13:18.573 回答
1

模拟 HttpContext 并不容易。您可以使用Typemock Isolator来设置上下文,但它不是免费的。另一种(更好的)方法是抽象 HttpContext 并针对抽象的模拟实现实现您的控制台(测试?)客户端

于 2012-04-05T22:16:41.403 回答