2011-05-19 59 views
2

我想用EF4.1代码首先用EF做手。我已经开发了我的模型,如:EF4.1代码先用Moq嘲弄

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。

回答

2

嘲笑数据访问时使用的一个很好的模式是Repository pattern and Unit of work。当你有一个存储库接口的抽象数据访问时,你可以使用一个模拟框架,如moq。为您提供可测试的存储库。

var mockUnitOfWork = new Mock<IUnitOfWork>(); 
mockUnitOfWork.SetupGet(p => p.UserRepository.GetSomeUsers) 
.Returns(new List<User> { "Username", "email","etc"})); 

然后,您可以使用mockUnitOfWork和存储库,而无需访问数据库作为其唯一的用户内存访问列表中的测试数据访问。