如果我的单元测试依赖于文件系统并且我需要模拟这个,那么最好的方法是什么?
由于
答案 0 :(得分:9)
文件系统是TDD如何推动您实现更好,更灵活设计的绝佳示例。通常,当您与文件系统交互时,您可以使用 Streams 或 TextWriters 而不是实际文件来处理文件的读取和写入。
这些都是抽象类型,所以很容易模拟。
现在您拥有更灵活的API,因为它没有与文件系统紧密耦合,但仍支持文件操作。
答案 1 :(得分:3)
您基本上有两个选项:eiter抽象IFileSystemService
后面的所有文件系统相关逻辑,或者使用Microsoft的Stubs,这是
... .NET的轻量级框架,提供测试存根。对于接口和非密封类,会生成类型安全的包装器,可以通过附加委托来轻松自定义。
答案 2 :(得分:1)
答案 3 :(得分:1)
免责声明我在Typemock工作。
我很高兴地说,我们的上一版本支持以下类型的System.IO被嘲笑:
有一个简短的例子:
public void Test()
{
string path = @"C:\TypemockCan.txt";
Isolate.WhenCalled(() => File.Exists(null)).WillReturn(true);
Assert.IsTrue(File.Exists(path));
}
查看更多examples。