C# 如何设计基于XML的可测试存储库?

C# 如何设计基于XML的可测试存储库?,c#,unit-testing,file-io,C#,Unit Testing,File Io,我正在编写基于XML的存储库。目前,它是一个具有基本操作的单一类。构造函数中传递的参数之一是存储库所在文件的url public Repository(string fileUrl, IRepositorySchema schema) 公共存储库(字符串文件URL、IRepositorySchema) 现在我想为这个类编写单元测试。我不想使用真实的文件。我做了一些研究,找到了可能对我完成这项任务有帮助的图书馆 真正的问题是,我如何更改我的存储库类,以便可以模拟/存根文件?我应该将文件系统与文件u

我正在编写基于XML的存储库。目前,它是一个具有基本操作的单一类。构造函数中传递的参数之一是存储库所在文件的
url

public Repository(string fileUrl, IRepositorySchema schema) 公共存储库(字符串文件URL、IRepositorySchema) 现在我想为这个类编写单元测试。我不想使用真实的文件。我做了一些研究,找到了可能对我完成这项任务有帮助的图书馆


真正的问题是,我如何更改我的存储库类,以便可以模拟/存根文件?我应该将文件系统与文件url一起注入吗?

这绝对是模拟文件进行测试的好方法

使用,您将不再调用静态方法,而是将文件实例作为传递到存储库中,并通过它执行所有调用,这与使用存储库架构相同:

public Repository(SystemInterface.IO.IFile file, IRepositorySchema schema)

对于生产,您将使用SystemWrapper提供的Instance,它是使用
System.IO.File
实现的,对于测试,您将提供您自己的
SystemInterface.IO.IFile
实现,以满足您的测试需要。

我建议您看看。看起来它正在进行更积极的开发


你可以用同样的方法来处理它。只需注入构造函数
IFileSystem
。在单元测试中,您可以选择一个库来模拟它,或者使用该库附带的便利工具。

似乎是正确的方法。你对它有什么特别的怀疑吗?
文件
类是静态的,那么我如何注入它呢?我听说有很多方法可以做到这一点。当你们使用包装器时,你们不会调用BCL的静态方法。包装器的全部要点是不调用它们。通过接口调用。注入该接口的实现并使用该对象。哇,我没有想到这一点。我要试试这个。我应该使用IFileWrap还是有其他更合适的接口?