我正在尝试为单元测试创​​建伪造的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/

10-13 01:47