我正在编写一些调用web服务、读回响应并对其执行某些操作的代码。我的代码名义上是这样的:
string body = CreateHttpBody(regularExpression, strategy);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_url);
request.Method = "POST";
request.ContentType = "text/plain; charset=utf-8";
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(Encoding.UTF8.GetBytes(body), 0, body.Length);
requestStream.Flush();
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
byte[] data = new byte[response.ContentLength];
using (Stream stream = response.GetResponseStream())
{
int bytesRead = 0;
while (bytesRead < data.Length)
{
bytesRead += stream.Read(data, bytesRead, data.Length - bytesRead);
}
}
return ExtractResponse(Encoding.UTF8.GetString(data));
}
我实际执行自定义操作的唯一部分是在ExtractResponse
和CreateHttpBody
方法中。然而,只对这些方法进行单元测试感觉是错误的,并希望其余的代码能够正确地组合在一起。有没有办法截取HTTP请求并提供模拟数据给它?
EDIT此信息现已过期。使用System.Net.Http.HttpClient库构建这类代码要容易得多。
https://stackoverflow.com/questions/9095627
复制相似问题