我正在尝试使用 EF4.1 Code Frist。我已经开发了我的模型,例如:
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 来模拟这个存储库并进行单元测试。也许我是模拟单元测试的新手。
请告诉我或指出一些资源,我可以在其中学习如何在 EF4.1 中使用 Moq。
模拟数据访问时要使用的一种很好的模式是存储库模式和工作单元。 当您对存储库接口进行抽象数据访问时,您可以使用模拟框架,如 moq。为您提供可测试的存储库。
var mockUnitOfWork = new Mock<IUnitOfWork>();
mockUnitOfWork.SetupGet(p => p.UserRepository.GetSomeUsers)
.Returns(new List<User> { "Username", "email","etc"}));
然后,您可以使用 mockUnitOfWork 和存储库来测试数据访问,而不必命中数据库,因为它只是访问内存中的用户列表。