【发布时间】:2014-04-05 14:23:43
【问题描述】:
我的存储库层中有这样的方法:
public IEnumerable<User> GetActiveUsers()
{
return dbContext.Users
.Where(u => u.IsActive)
.OrderBy(u => u.Name)
.ToList();
}
我应该通过模拟DbContext 来对该方法进行单元测试,还是应该使用实际数据库对其进行测试?
我知道当我使用实际数据库时它不再是“单元”测试,但我没有看到模拟 DbContext 来测试我的存储库方法的价值,这些方法在逻辑上很薄,通常只调用 EF 的方法直接。
如果我必须使用实际的数据库,是否有任何标准策略可以在数据库中填充测试数据,以便测试独立运行并且不会改变数据库中的任何状态?
【问题讨论】:
-
我还没有使用实体框架(我使用 NHibernate 作为 ORM)但是当我必须测试数据库逻辑时,我使用带有内存数据库的 sqlite。
标签: c# entity-framework unit-testing integration-testing moq