设计模式——存储库是否只对单元测试有必要?



Ayende以前写过一组关于存储库如何成为新的单例模式的文章。我想我都读过了,我同意他的一些观点。大多数时候,我看到有几十个存储库的项目只是为了抽象一个ORM的使用,而ORM已经抽象了数据库访问。

在避免它们之后,我开始遇到一些问题来隔离我的UT代码,因为一些orm是难以模拟的软件片段,或者至少EF是。一些Ayende的项目使用内存数据库进行测试,但是,即使它工作正常,我也不想这样做。

所以,这就是我的问题:我既不喜欢有几十个典型的存储库也不喜欢通用的存储库,但是,我想有一个简单的方法来隔离我的代码。

当前存储库仅对ut有用吗?

注意:我谈论的是数据库访问,而不是抽象其他类型的数据源,如远程服务。

对我来说,存储库(或dao)很有用,因为它们将与持久化相关的代码与业务逻辑代码隔离开来。

一个(期望的)副作用是业务逻辑代码和数据访问代码都变得更容易测试。

另一个期望的副作用是,与持久性相关的方法很容易被多个业务逻辑服务重用。

最新更新