diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockFileStreamTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockFileStreamTests.cs index ec3781b4c..89fe72551 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockFileStreamTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockFileStreamTests.cs @@ -106,5 +106,20 @@ public void MockFileStream_Dispose_MultipleCallsDontThrow() // Assert Assert.DoesNotThrow(() => stream.Dispose()); } + + [Test] + public void MockFileStream_Dispose_OperationsAfterDisposeThrow() + { + var fileSystem = new MockFileSystem(); + var path = XFS.Path("C:\\test"); + fileSystem.AddFile(path, new MockFileData(new byte[0])); + var stream = fileSystem.FileInfo.FromFileName(path).OpenWrite(); + + // Act + stream.Dispose(); + + // Assert + Assert.Throws(() => stream.WriteByte(0)); + } } } diff --git a/System.IO.Abstractions.TestingHelpers/MockFileStream.cs b/System.IO.Abstractions.TestingHelpers/MockFileStream.cs index 68095d85a..b9dc51e6a 100644 --- a/System.IO.Abstractions.TestingHelpers/MockFileStream.cs +++ b/System.IO.Abstractions.TestingHelpers/MockFileStream.cs @@ -8,6 +8,7 @@ public class MockFileStream : MemoryStream private readonly bool canWrite = true; private readonly FileOptions options; private bool disposed; + private bool closed; public enum StreamType { @@ -64,8 +65,14 @@ public MockFileStream( #if NET40 public override void Close() { + if (closed) + { + return; + } InternalFlush(); + base.Close(); OnClose(); + closed = true; } #else protected override void Dispose(bool disposing)