Artificially populate HttpContext object in a Console application

≡放荡痞女 提交于 2019-12-20 04:21:07

问题


I am writing a wrapper library for log4net. This library should be able to capture Context information such as querystring, cookie, form fields etc. etc.

I am invoking this wrapper class from Console application as opposed to TDD class.

Is there a way to populate HttpContext object inside a Console application as follows?

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";

And then retrieve it as follows?

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

I am getting the following exception when I attempt the above code.

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

回答1:


you can read here on using Moq to fake it out: http://o2platform.wordpress.com/2011/04/05/mocking-httpcontext-httprequest-and-httpresponse-for-unittests-using-moq/




回答2:


It's not easily possible to mock a HttpContext. You could use Typemock Isolator to setup the context but its not free. Another (better) approach would be to abstract the HttpContext and implement your console (test?) client against a mock implementation of the abstraction



来源:https://stackoverflow.com/questions/10036602/artificially-populate-httpcontext-object-in-a-console-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!