【问题标题】:Are repositories something necessary only for unit testing?存储库是否仅用于单元测试?
【发布时间】:2012-12-22 23:02:41
【问题描述】:

Ayende 前段时间写了一组关于Repositories are the new Singletons 模式的文章。我认为我已经阅读了所有这些内容,并且我同意他的一些观点。大多数时候,我看到有数十个存储库的项目只是为了抽象一个 ORM 的使用,这已经抽象了数据库访问。

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

所以,这是我的问题:我不喜欢拥有数十个典型存储库或通用存储库,但是,我希望有一种简单的方法来隔离我的代码。

目前存储库仅对 UT 有用吗?

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

【问题讨论】:

    标签: design-patterns domain-driven-design repository-pattern ddd-repositories


    【解决方案1】:

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

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

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

    【讨论】:

    • 我认为 OP 是在问一个专门关于在 ORM 之上使用存储库的问题。 ORM 通常会提供一些您提到的开箱即用的所需副作用,但可能难以进行单元测试 (EF)。
    • 没错,我的问题是关于 ORM 之上的存储库。
    • 我的回答是关于 ORM 之上的存储库。您仍然需要使用 ORM 编写查询,并且应该对这些查询进行测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 2011-01-16
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    相关资源
    最近更新 更多