如何对存储库方法进行单元测试

4

我有一个单元测试的方法:

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

请问有人能告诉我如何进行单元测试吗?

我在思考需要测试的是是否使用正确的ID调用了Find方法?

一开始,我尝试使用Moq来模拟上下文中的_db。但是Set不是虚方法,所以无法使用Verify

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

2个回答

9

仓库实现通常充满对ORM API的调用。在这里没有任何东西可以进行单元测试。您应该编写一个集成测试。使用内存数据库,如SQLite。阅读这个这个。这样,您将覆盖映射、条件、HQL等内容。我知道您正在使用EF,但我认为原则与NHibernate相同。

关于模拟_db。有一个非常好的指导方针:不要模拟您不拥有的类型


0

我在Github上放了一个通用的仓储实现,可以方便地进行测试。你可以在这里查看:

https://github.com/rcravens/GenericRepository

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

Bob


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接