【发布时间】:2012-08-25 04:35:42
【问题描述】:
我正在尝试首先使用 EntityFramework 代码测试我的代码。为了使其可测试并允许隔离测试,我创建了我的DbContext 实现的接口。我没有测试 DbContext 类 - 我将假设 EF 代码按预期工作。
现在,考虑以下方法:
public IEnumerable<User> GetOddId()
{
return context_.Users.Where((u, i) => i % 2 == 1).AsEnumerable();
}
此方法将通过我的模拟 FakeDbSet(因为它会使用内存中的 LINQ 提供程序)而通过,而在使用 EF/LINQ to SQL 驱动程序时它会失败并出现异常。
您会保持原样并希望人们知道的足够多,不要写这样的查询吗?您会放弃隔离测试并在实际数据库上进行测试吗?
带有 DataMigrations(可能带有适当的种子)的 LocalDb 是否有助于在实际数据库上进行测试?
请证明答案。
TLDR:如何测试 EntityFramework 代码,考虑内存 LINQ 和 SQL LINQ 之间的差异?
很久以后的编辑:我已经找到了一个非常好的框架,可以完全满足我的需要。我写了一篇关于unit testing with Effort 的博文。另请注意,即将推出的 EF6 可能不需要所有这些,它承诺提供一些单元测试功能。
【问题讨论】:
标签: c# linq unit-testing ef-code-first