0

如果发生异常,我如何测试 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
4

2 回答 2

3

就是Using这样。即使有异常,也会using导致编译器在一个finally子句中烘焙,该子句将调用Dispose.

无需再做一次。

于 2012-11-02T18:21:16.600 回答
1

我尝试使用一些模拟和假实现来解决这个问题,但 Stream 基类对此并不友好。最后,我在单元测试中使用与spender建议的完全相同的原则解决了它(使用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();
}

流.ReadByte(); 导致异常。

也许在 SystemWrapper 的帮助下它存在一种更简洁的方式,请参阅https://systemwrapper.codeplex.com/

高温高压

于 2013-10-31T11:39:54.070 回答