模拟文件系统

时间:2010-02-15 14:36:50

标签: .net unit-testing typemock

如果我的单元测试依赖于文件系统并且我需要模拟这个,那么最好的方法是什么?

由于

4 个答案:

答案 0 :(得分:9)

文件系统是TDD如何推动您实现更好,更灵活设计的绝佳示例。通常,当您与文件系统交互时,您可以使用 Streams TextWriters 而不是实际文件来处理文件的读取和写入。

这些都是抽象类型,所以很容易模拟。

现在您拥有更灵活的API,因为它没有与文件系统紧密耦合,但仍支持文件操作。

答案 1 :(得分:3)

您基本上有两个选项:eiter抽象IFileSystemService后面的所有文件系统相关逻辑,或者使用Microsoft的Stubs,这是

  

... .NET的轻量级框架,提供测试存根。对于接口和非密封类,会生成类型安全的包装器,可以通过附加委托来轻松自定义。

答案 2 :(得分:1)

答案 3 :(得分:1)

免责声明我在Typemock工作。

我很高兴地说,我们的上一版本支持以下类型的System.IO被嘲笑:

  • 档案
  • 目录
  • 的FileStream

有一个简短的例子:

public void Test()
{
    string path = @"C:\TypemockCan.txt";

    Isolate.WhenCalled(() => File.Exists(null)).WillReturn(true);

    Assert.IsTrue(File.Exists(path));
}

查看更多examples