我正在尝试使用EF4.1 Code Frist进行EF操作。我开发了我的模型,如:
public class User
{
[Key]
public int Id{get;set;}
[Column("first_name")]
[StringLength(30)]
public string FristName{get;set;}
//............
//..............
}
我也写了一个界面:
public interface IUser
{
IDbSet<User> Users{get;}
}
我的上下文类看起来像这样:
public class UserContext : DbContext, IUser
{
public DbSet<User> Users{get;set;}
IDbSet<User> IUser.Users{get return{Users;}}
}
现在我不知道如何使用Moq来模拟这个存储库并进行单元测试。也许我是嘲笑单元测试的新手。
请告诉我或者给我一些资源,我可以学习如何使用Moq和EF4.1。
答案 0 :(得分:2)
模拟数据访问时使用的一个很好的模式是Repository pattern and Unit of work。当您对Repository接口进行抽象数据访问时,可以使用像moq这样的模拟框架。为您提供可测试的存储库。
var mockUnitOfWork = new Mock<IUnitOfWork>();
mockUnitOfWork.SetupGet(p => p.UserRepository.GetSomeUsers)
.Returns(new List<User> { "Username", "email","etc"}));
然后,您可以使用mockUnitOfWork和存储库来测试数据访问,而不必将数据库作为唯一访问内存用户列表的数据库。