Я использую EF4, Microsoft.Entity.CTP и новейшее MOQ. Я пытаюсь создать общий класс репозитория и moq DBContext с помощью MOQ. Всякий раз, когда я запускаю свой тест moq, я получаю «ссылка на объект, не установленную на экземпляр объекта» на this.context.Set(). Add (entity); и я не понимаю, почему. Код работает нормально без мока.Entity Framework 4, MOQ,
public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
{
private IContext context;
public GenericRepository(IContext context)
{
this.context = context;
}
public IList<TEntity> List
{
get { return context.Set<TEntity>().ToList(); }
}
public void Create(TEntity entity)
{
this.context.Set<TEntity>().Add(entity);
this.context.SaveChanges();
}
}
var mock = new Mock<IContext>();
GenericRepository<Product> producRepository = new GenericRepository<Product>(mock.Object);
mock.Setup(x => x.Product.Add(productType));
mock.Setup(x => x.SaveChanges());
productRepository.Create(product);
mock.VerifyAll();
привет, спасибо за ответ. На объекте DbContext это конкретный класс. public DbSet Set () где TEntity: class ;. Как я могу издеваться над этим? –
DbSet не является запечатанным классом, поэтому вы можете выполнить его, как вы бы, интерфейс. –