使用 Fakes 自动化单元测试 DbContext 和集成测试

Automate Unit Testing DbContext and Integration Test With Fakes

假设我有以下代码:

public Item CoolFunction(int i) {
    var result = SomeContext.Item.First(t => t.Id == i);
    return result;
}

假设出于某种原因我想对该方法进行单元测试。在这种情况下,我可以使用 MS Fakes 伪造上下文。但是如果我想针对真实的 Db 测试这段代码,我必须编写另一个单元测试来这样做。有没有一种(好的或方便的或推荐的)方法来编写一个带有可以用假上下文或真实数据库进行测试的开关的单元测试?

我绝对推荐查看 Effort: https://effort.codeplex.com/

它是一个"Entity Framework Unit Testing Tool",用于设置内存数据库。数据库可以是 "transient"(为每个测试重新创建)或 "persistent"(为所有单元测试维护相同的数据库)。

单元测试和集成测试的两全其美。我发现它比仅仅模拟 IDbSet 更简单。