C# 如何测试EF模型
我试图弄清楚如何通过TDD编写实体框架代码。我发现这很难,因为我没有像过去使用RubyonRails那样的测试数据库。用一个例子可能更容易解释: 目前我有:C# 如何测试EF模型,c#,asp.net-mvc-3,testing,C#,Asp.net Mvc 3,Testing,我试图弄清楚如何通过TDD编写实体框架代码。我发现这很难,因为我没有像过去使用RubyonRails那样的测试数据库。用一个例子可能更容易解释: 目前我有: public interface IMyContext { IDbSet<UserProfile> Users { get; set; } } 我不知道如何在没有运行数据库的情况下测试UserModel代码。我知道我可以模拟MyContext-但是代码MyContext.Users.Where。。。可能涉及复杂的模拟?
public interface IMyContext
{
IDbSet<UserProfile> Users { get; set; }
}
我不知道如何在没有运行数据库的情况下测试UserModel代码。我知道我可以模拟MyContext-但是代码MyContext.Users.Where。。。可能涉及复杂的模拟?我是否构造了错误的代码?在没有测试数据库的情况下,如何为模型编写测试?还是我应该伪造上下文
谢谢 将代码分解为核心组件,您将意识到您所需要做的就是模拟上下文的
用户
属性。在此之后,Where实际上只是一个针对IEnumerable
对象的静态方法
var users = myContext.Users;
var returnEnumerable = Enumerable.Where(users, u=>u.id == id);
return returnEnumerable
因此,只需以这样的方式模拟您的上下文:当调用
.Users
时,它将返回一个由您创建的IDbSet
,好吧,这很有意义,但IDbSet不是一个接口吗?所以我们也必须模仿它?你可以这样做,或者你可以让用户作为IDbSet的具体实现返回
var users = myContext.Users;
var returnEnumerable = Enumerable.Where(users, u=>u.id == id);
return returnEnumerable