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

标签 c# unit-testing file-io

我正在编写基于 XML 的存储库。现在它是一个基本的类 CRUD操作。构造函数中传递的参数之一是将保存存储库的文件的 url

public Repository(string fileUrl, IRepositorySchema schema)

现在我想为这个类编写单元测试。我不想使用真实文件。我做了一些研究,发现 SystemWrapper可能会帮助我完成这项任务的图书馆。

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

最佳答案

绝对是模拟文件进行测试的好方向。

使用 SystemWrapper , 你不会调用 System.IO.File不再是静态方法,而是将文件实例作为 SystemInterface.IO.IFile 传递到存储库中并通过它执行所有调用,就像您对存储库模式所做的一样:

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

对于生产,您将使用 SystemWrapper.IO.FileWrap由 SystemWrapper 提供的实例,它是使用 System.IO.File 实现的,对于测试,您将提供适合您的测试需要的自己的 SystemInterface.IO.IFile 实现。

关于c# - 如何设计基于 XML 和可测试的存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24351990/

相关文章:

c# - 应用程序数据的常用存储位置在哪里

c# - headless HTML 渲染,最好是开源的

ios - 在 iOS 单元测试中模拟 NSHTTPURLRequest 和 NSHTTPURLResponse

unit-testing - 在进行单元测试时,是否可以删除或监视 React 中的 setState 方法?

c# - 转换为分数英寸

c# - 为什么在将方法分配给委托(delegate)时不添加括号?

java - 单元测试: Is dependency between tests is a good idea at all?

c - 对这种行为有什么解释吗?

指针与整数比较错误

java - 防止目录被删除