我试图弄清楚如何通过 TDD 编写实体框架代码优先代码。我发现这很难,因为我没有像过去使用 Ruby On Rails 那样的测试数据库。用一个例子可能更容易解释:
目前我有:
public interface IMyContext
{
IDbSet<UserProfile> Users { get; set; }
}
和
public class UserModel
{
IMyContext myContext;
UserModel(IMyContext myContext)
{
this.myContext = myContext;
}
UserProfile GetUser(int id)
{
return myContext.Users.Where(u => u.id == id);
}
}
我不确定如何在没有运行数据库的情况下测试 UserModel 代码。我知道我可以模拟 MyContext - 但代码 myContext.Users.Where ... 可能涉及复杂的模拟?我的代码结构错了吗?如何在没有测试数据库的情况下为模型编写测试?还是我应该伪造上下文?
谢谢!