.net 单元测试写入HttpWebRequest';s请求流

.net 单元测试写入HttpWebRequest';s请求流,.net,unit-testing,httpwebrequest,.net,Unit Testing,Httpwebrequest,我在工作时在我们的应用程序中重新填充了一些单元测试,并遇到了以下方法 public virtual void WriteBodyToRequestStream(HttpWebRequest webRequest, byte[] redirectBodyBuffer) { var requestStream = webRequest.GetRequestStream(); requestStream.Write(redirectBodyBuffer, 0, redirectBody

我在工作时在我们的应用程序中重新填充了一些单元测试,并遇到了以下方法

public virtual void WriteBodyToRequestStream(HttpWebRequest webRequest, byte[] redirectBodyBuffer) {
    var requestStream = webRequest.GetRequestStream();
    requestStream.Write(redirectBodyBuffer, 0, redirectBodyBuffer.Length);
    requestStream.Close();
}
我正在尝试编写一个简单的测试,在流中插入一些文本。我遇到的问题是如何在将文本写入流后验证文本。这是我到目前为止所拥有的

[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);
}

当我运行此测试时,
变量为空。

您真的需要将
HttpWebRequest
传递给您的
WriteBodyToRequestStream
方法吗?您真的不关心
HttpWebRequest
您更感兴趣的流:

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

这使您的方法易于测试(无论是单元测试还是集成测试,我将留待讨论;p)

您所拥有的不是单元测试;这是一个集成测试_helper对象是什么,它做什么,你能显示源代码吗?@Bronumski类的其余部分与所讨论的方法无关,因此,这在上下文中是不相关的。如果您的问题是为什么请求流为null,并且您正在使用您尝试测试的请求调用helper对象上的WriteBodyToRequestStream方法,则情况并非如此。