如何测试requestStream是否已关闭和处理

时间:2012-11-02 18:19:58

标签: vb.net

如果发生异常,我如何测试requestStream是否已关闭并处理

Try
    Using requestStream As Stream = rqst.GetRequestStream()

        requestStream.Write(fle, 0, fle.Length)

        Throw New ApplicationException("Exception Occured")

    End Using


Catch ex As Exception

    MessageBox.Show(ex.Message.ToString())

Finally
    'test if the requeststream is closed and disposed?
    MessageBox.Show("")

End Try

2 个答案:

答案 0 :(得分:3)

这就是Using的作用。即使存在异常,using也会导致编译器在finally子句中进行烘焙,该子句将调用Dispose

无需再做一次。

答案 1 :(得分:1)

我尝试使用一些模拟和假实现来解决这个问题,但Stream基类对此并不友好。 最后,我在单元测试中使用完全相同的原则解决了它(如使用C#):

[TestMethod]
[ExpectedException(typeof(ObjectDisposedException))]
public void When_EmailResource_gets_disposed_Should_dispose_ContentStream()
{
    var stream = new System.IO.MemoryStream();

    var resource = new EmailResource
    {
        ContentStream = stream,
    };

    resource.Dispose();

    stream.ReadByte();
}

stream.ReadByte();引起异常。

在SystemWrapper的帮助下,可能存在更清晰的方式,请参阅https://systemwrapper.codeplex.com/

HTH