如何单元测试存储库方法



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

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

谁能告诉我如何进行单元测试?

我在想我需要测试的是找到正确的id吗?

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

有人能建议一种替代的测试方法吗?

存储库实现通常充满了对ORM API的调用。这里没有什么要unit测试的。您应该编写一个集成测试。使用内存数据库,如SQLite。读这个或这个。这样你就可以涵盖映射、标准、HQL等。我知道你正在使用EF,但是我认为这个原则和NHibernate是一样的。

关于嘲讽_db。有一个非常好的指导原则:不要模拟您不拥有的类型。

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

https://github.com/rcravens/GenericRepository

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

鲍勃

最新更新