我正在尝试为单元测试创建伪造的HttpContext
,并且还想设置UserAgent
属性。
我尝试了下面的代码,但是失败了,说不支持平台。
var httpRequest = new HttpRequest(null, "http:xyz.com", null);
httpRequest.Headers["UserAgent"] = "unitTest";
var stringWriter = new StringWriter();
var httpResponce = new HttpResponse(stringWriter);
HttpContext context = new HttpContext(httpRequest, httpResponce);
有什么帮助吗?
最佳答案
如您在参考源中所见,UserAgent
是从HttpWorkerRequest
中提取的。更改它的唯一方法是使用反射调用this constructor of HttpRequest
以便在以下位置传递工作程序请求:
internal HttpRequest(HttpWorkerRequest wr, HttpContext context)
当我进一步调查时,似乎它是从某个较远的
IIS
类或使用Server variable ALL_RAW
使用ISAPI时检索属性。我开始认为这可能成为一件可怕的事情。您可能有更多的运气可以自己覆盖abstract class
HttpWorkerRequest
,但这可能会成为实施梦a。关于c# - 如何在单元测试中模拟Http请求的UserAgent属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30051694/