【问题标题】:How to unit test repository method如何对存储库方法进行单元测试
【发布时间】:2011-08-17 23:29:30
【问题描述】:

我有这个方法进行单元测试:

public virtual TEntity Get(int id)
        {
            return _db.Set<TEntity>().Find(id);
        }

有人可以告诉我如何进行单元测试吗?

我在想我需要测试的是 Find 是用正确的 id 调用的吗?

首先,我尝试使用 Moq 模拟上下文 _db。 Set 不是虚拟的,所以不能使用Verify

有人可以建议另一种测试方法吗?

【问题讨论】:

    标签: unit-testing entity-framework mocking moq


    【解决方案1】:

    存储库实现通常充满对 ORM API 的调用。这里没有要unit 测试的内容。您应该改为编写 集成 测试。在 SQLite 等内存数据库中使用。阅读thisthis。这样您将涵盖您的映射、标准、HQL 等。我知道您使用的是 EF,但我认为该原理与 NHibernate 相同。

    关于嘲笑_db。有一个很好的指导方针:Don't mock types you don't own

    【讨论】:

      【解决方案2】:

      我在 github 上放置了一个通用存储库实现,可以轻松进行测试。你可以在这里查看:

      https://github.com/rcravens/GenericRepository

      存储库实现本身已经过测试,还有一个假的(内存中的)存储库实现,您可以注入它来测试更高级别的代码。

      鲍勃

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-23
        • 2021-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多