我正在编写基于XML的存储库。目前,它是一个基本CRUD操作的单个类。构造函数中传递的参数之一是保存存储库的文件的url
。
public Repository(string fileUrl, IRepositorySchema schema)
现在我想为这堂课写单元测试。我不想使用真实文件。我做了一些研究,找到了SystemWrapper库,可以帮助我完成这项任务。
真正的问题是,如何更改我的存储库类,以便我可以模拟/存根文件?我应该将文件系统与文件URL一起注入吗?
答案 0 :(得分:1)
绝对是模拟文件进行测试的好方向。
使用SystemWrapper,您将不再调用System.IO.File
静态方法,而是将文件实例作为SystemInterface.IO.IFile
传入存储库,并通过它执行所有调用,与存储库模式相同:
public Repository(SystemInterface.IO.IFile file, IRepositorySchema schema)
对于生产,您将使用SystemWrapper提供的SystemWrapper.IO.FileWrap
实例,该实验使用System.IO.File
实现,为了进行测试,您将提供适合您测试需求的自己的SystemInterface.IO.IFile
实现。
答案 1 :(得分:0)
我建议您查看System.IO.Abstractions。看起来它正处于更积极的发展之中。
您可以使用相同的方法。只是构造函数注入IFileSystem
。在您的单元测试中,您可以使用您选择的库来模拟它,或者使用随库提供的方便testing helpers。