我正在开始一个新项目,并非常非常努力地使用TDD来驱动设计。我已经努力了很多年,终于获得批准,可以花更多的时间在这个项目上使用它,同时我会学习如何正确地做。
这是一个新模块,可以绑定到现有系统中。当前,所有数据访问都通过Web服务进行,Web服务在大多数情况下只是数据库存储过程的一个精简包装。
一个要求是,对于给定的商店,我将退回所有被认为对该应用程序有效的采购订单。如果PO的发货日期在商店开业日期的指定范围内(对于新商店),则认为该PO有效。
现在,我不能在应用程序代码中放入此逻辑,因为鉴于上述限制,我不会带回一百万个PO,只是为了使适用于该商店的十二个PO可以应用到该商店。
我当时在想,我可以将日期范围传递给GetValidPOs proc,并使用这些值返回有效的PO。但是,如果我们在被认为是有效的采购订单中添加了另一个要求,该怎么办?
以及如何测试并验证其是否正常运行?我们没有使用ORM,并且不太可能发生。而且我无法在测试中调用数据库。
我被卡住了。
我的另一个想法是,有一些模拟返回有效数据,其他模拟返回一些不良数据,并让本地存储库在发生不良数据时引发异常,并测试如果GetValidPOs proc返回无效数据,则引发异常测试中使用的模拟)。
这有意义吗?或者,还有更好的方法?
更新: 看起来我可以使用EF。现在,我只需要弄清楚如何使用它,并使它可测试,同时仍然能够依赖存储过程,以及使数据分散在多个数据库中的困难。