【发布时间】:2008-11-24 14:42:14
【问题描述】:
我了解需要测试具有逻辑的类(例如,可以计算折扣的类),您可以在其中测试 实际 类。
但我刚刚开始为一个将充当存储库(从数据库获取对象)的项目编写单元测试。我发现自己正在编写一个实现ISomethingRepository 接口的“假”存储库。它使用Dictionary<Guid, Something> 进行内部存储。它实现了接口的Add(Something) 和GetById(Guid) 方法。
我为什么要写这个?我写的东西在部署时不会被软件实际使用,对吧?我真的看不出这个练习的价值。
我还得到了使用模拟对象的建议,我可以提前设置它来满足某些期望。这对我来说似乎更没有意义:当然测试会成功,我已经模拟/伪造它成功了!而且我仍然不确定实际软件在连接到数据库时是否会正常运行......
困惑...
有人可以指出正确的方向来帮助我理解这一点吗?
谢谢!
【问题讨论】:
-
我对此表示赞同,因为这经常让我感到厌烦。大多数快速 TDD 倡导者往往会意外陷入这种情况,并最终测试现实中不会发生的场景/代码。
标签: unit-testing mocking