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