public interface IFileProxy
Stream Open(string path, FileMode mode);
public class MyFileProxy : IFileProxy
public Stream Open(string path, FileMode mode)
return File.Open(path, mode);
public class ClassThatUsesFileStuff
private readonly IFileProxy fileProxy;
public ClassThatUsesFileStuff(IFileProxy fileProxy)
this.fileProxy = fileProxy;
public void DoSomething()
var stream = fileProxy.Open("my path here", FileMode.OpenOrCreate);
public class WhenDoingSomething
public void ItShouldOpenAFile()
var fileProxy = A.Fake<IFileProxy>();
var sut = new ClassThatUsesFileStuff(fileProxy);
A.CallTo(() => fileProxy.Open("my path here", FileMode.OpenOrCreate)).MustHaveHappened();
public void ItUsesAStream()
var fileProxy = A.Fake<IFileProxy>();
A.CallTo(() => fileProxy.Open("my path here", FileMode.OpenOrCreate))
.Returns(new MemoryStream());