Writing unit testing to the HttpWebRequest request stream

I again fill out some unit tests in our application at work and came across the following method.

public virtual void WriteBodyToRequestStream(HttpWebRequest webRequest, byte[] redirectBodyBuffer) {
    var requestStream = webRequest.GetRequestStream();
    requestStream.Write(redirectBodyBuffer, 0, redirectBodyBuffer.Length);
    requestStream.Close();
}

I am trying to write a simple test that inserts some text into a stream. The problem I am facing is figuring out how to check the text after it is written to the stream. Here is what I still have.

[Test, Ignore("not working yet")]
public void Should_write_to_request_stream()
{
    var request = WebRequest.Create("http://localhost/") as HttpWebRequest;
    request.Method = "POST";
    var encoding = new System.Text.UTF8Encoding();
    var bytes = encoding.GetBytes("testing");
    _helper.WriteBodyToRequestStream(request, bytes);

    var stream = request.GetRequestStream() as MemoryStream;
    var result = System.Text.Encoding.UTF8.GetString(stream.ToArray());

    Assert.AreEqual("testing", result);
}

When I run this test, streamvar is null.

+3
source share
1 answer

Do you really need to pass HttpWebRequestyour method WriteBodyToRequestStream? You really don't care HttpWebRequestanymore about the thread that interests you:

public virtual void WriteBodyToRequestStream(Stream requestStream , byte[] redirectBodyBuffer) {
//var requestStream = webRequest.GetRequestStream(); remove this line.
requestStream.Write(redirectBodyBuffer, 0, redirectBodyBuffer.Length);
requestStream.Close();
}

( unit test , , P)

+2

All Articles