如何在单元测试中模拟HttpRequest的UserAgent属性?

时间:2015-05-05 11:25:37

标签: c# .net unit-testing httprequest httpcontext

我正在为单元测试创​​建假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);

任何帮助?

1 个答案:

答案 0 :(得分:1)

正如您在参考来源中看到的那样,UserAgent是从HttpWorkerRequest中提取的。更改它的唯一方法是使用反射调用this constructor of HttpRequest以传递工作者请求:

internal HttpRequest(HttpWorkerRequest wr, HttpContext context)

正如我正在进一步调查的那样,它似乎从一些远离IIS类或使用Server variable ALL_RAW使用ISAPI时检索属性。

我开始认为这可能会成为一个可怕的事情被嘲笑。你可能有更多的运气自己覆盖abstract class HttpWorkerRequest,但它可能成为实施的噩梦。