Webサービスを呼び出すコードを書いています。応答を読み込んで何かします。私のコードは次のように名目上になります。私は実際に任意のカスタム操作をしていますCでのHTTPリクエストのユニットテスト#
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を使用すると、この種のコードを作成する方がずっと簡単です。
webserver _を正しく設定して、テストしたいものを設定して、 '\ Windows \ System32 \ drivers \ etc \ hosts'ファイルを変更して、そのサーバーにリクエストを"リダイレクト "することができます。 – ordag
関連:https://stackoverflow.com/q/9823039/12484 –