2012-11-02 22 views
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 

回答

3

這就是Using做我測試,如果requestStream關閉和處置。即使有例外,using也會導致編譯器在finally子句中烘烤,該子句將調用Dispose

沒有必要再做一次。

+0

感謝是可以測試?即時通訊實施idispose但不知道如何? –

+0

IDisposable沒有'Disposed'屬性,所以可能不會,儘管你可以在'End Using'之後的'requestStream'上嘗試一些操作並確保它們拋出'ObjectDisposedException'。 – spender

+0

它不會讓我建立它,如果我添加後 - 謝謝 –

1

我試圖解決這個使用一些嘲諷和假實現,但流基類是不友善的。 最後,我已經有在單元測試使用完全相同相同的原理花錢表明(使用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

+0

謝謝.................................... –

相關問題