我正在尝试为报告EventLog中条目的应用程序编写单元测试。现在,当我运行单元测试时,我必须创建一个临时EventLog,向其中写入条目,并在完成后删除日志。我这样做是因为我需要找回没有构造函数的EventLogEntry对象。
我的问题是,有什么方法可以模拟EventLog来获取EventLogEntries。对我而言,不得不将条目写入实际的EventLog似乎更像是集成测试,而不是单元测试。
最佳答案
您将完全是一个集成测试,这是正确的。但是,您需要问问自己,您到底想在这里进行什么测试。如果它确实是一个单元测试,并且您只想测试EventLogEntries上的逻辑,则应将事件日志与其他任何外部依赖项一样对待。
TDD使我走下了隔离和 mock 许多让人觉得很奇怪的事情的路,但最终使我免于以后的维护噩梦。即文件IO,日志记录,跟踪等...
我会将所有CRUD操作粘贴到接口(interface)边界后面的事件日志中,并将其视为数据访问。如果您无法轻松地带外创建EventLogEntries,那么您甚至可以考虑创建自己的实体来表示事件日志中的条目并使用它们。