Код EF4.1 сначала издевается над Moq - PullRequest
2 голосов
/ 19 мая 2011

Я пробую свои силы на EF с кодом FF EF4.1. Я разработал свои модели, как:

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.

1 Ответ

2 голосов
/ 14 июня 2011

Отличным шаблоном для использования при имитации доступа к данным является шаблон репозитория и Единица работы .Если у вас есть абстрагированный доступ к данным в интерфейсе репозитория, вы можете использовать фальшивый фреймворк, такой как moq .Чтобы предоставить вам тестируемое хранилище.

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

Затем вы можете использовать mockUnitOfWork и хранилище для проверки доступа к данным, не обращаясь к базе данных как к единственному доступу к списку пользователей в памяти.

...