C# 正在为HttpContext.Current设置HttpRequest请求正文
我试图在测试类中对HttpContext进行单元测试,如下所示,但找不到为该对象设置请求体的方法 有什么办法吗?所以C# 正在为HttpContext.Current设置HttpRequest请求正文,c#,asp.net-mvc,C#,Asp.net Mvc,我试图在测试类中对HttpContext进行单元测试,如下所示,但找不到为该对象设置请求体的方法 有什么办法吗?所以HttpContext.Current.Request.GetBufferedInputStream();将返回我设置的正文字符串的字节 [TestMethod()] public void GetRequestStringTest2() { string filename = ""; string url = "http://
HttpContext.Current.Request.GetBufferedInputStream()
;将返回我设置的正文字符串的字节
[TestMethod()]
public void GetRequestStringTest2()
{
string filename = "";
string url = "http://www.localhost.com";
string queryString = "";
HttpRequest request = new HttpRequest(filename, url, queryString);
// TODO: set request body here
// string requestBody = "request-test-123";
StringBuilder sb = new StringBuilder("response-test-123");
StringWriter writer = new StringWriter(sb);
HttpResponse response = new HttpResponse(writer);
HttpContext.Current = new HttpContext(request, response);
string requestString = HttpUtilities.GetRequestString();
Assert.IsNotNull(requestString);
Assert.AreEqual("request-test-123", requestString);
}
public static string GetRequestString()
{
if (HttpContext.Current != null)
{
Stream stream = HttpContext.Current.Request.GetBufferedInputStream();
new StreamReader(stream).ReadToEnd();
StreamReader bodyStream = new StreamReader(HttpContext.Current.Request.InputStream);
bodyStream.BaseStream.Seek(0, SeekOrigin.Begin);
string requestString = bodyStream.ReadToEnd();
return requestString;
}
throw new InvalidOperationException("HttpContext.Current is not available.");
}
有,但这并不容易 为此,需要从HttpRequest调用方法
internalvoid SetRawContent(HttpRawUploadedContent rawContent)
问题是,您无法从外部程序集调用内部方法,但是有一些方法可以绕过此方法: