В моем коде я проверяю свойство Local объекта DbSet, чтобы увидеть, какие объекты уже добавлены в DbContext, но еще не зафиксированы в базе данных. Теперь мне нужно смоделировать это свойство, но может показаться, что я не могу. Это означает, что когда я тестирую свой код, он терпит неудачу, потому что свойство Local имеет значение null. Есть идеи, как я могу это сделать? Я добавил код, который в настоящее время использую для генерации фиктивного dbset ниже, и он включает в себя код для генерации LocalView, но это происходит с NotImplementedException () при вызове конструктора.
Я использую последнюю версию .Net Core и Entity Framework.
Приветствие
Mark
var localDbSet = new Mock<DbSet<TEntity>>();
var localList = new List<TEntity>().AsQueryable();
var mockDbSet = new Mock<DbSet<TEntity>>();
var queryableData = list.AsQueryable();
localDbSet.As<IQueryable<TEntity>>().Setup(m => m.Provider).Returns(localList.Provider);
localDbSet.As<IQueryable<TEntity>>().Setup(m => m.Expression).Returns(localList.Expression);
localDbSet.As<IQueryable<TEntity>>().Setup(m => m.ElementType).Returns(localList.ElementType);
localDbSet.As<IQueryable<TEntity>>().Setup(m => m.GetEnumerator()).Returns(localList.GetEnumerator());
mockDbSet.As<IQueryable<TEntity>>().Setup(m => m.Provider).Returns(queryableData.Provider);
mockDbSet.As<IQueryable<TEntity>>().Setup(m => m.Expression).Returns(queryableData.Expression);
mockDbSet.As<IQueryable<TEntity>>().Setup(m => m.ElementType).Returns(queryableData.ElementType);
mockDbSet.As<IQueryable<TEntity>>().Setup(m => m.GetEnumerator()).Returns(queryableData.GetEnumerator());
mockDbSet.Setup(d => d.Add(It.IsAny<TEntity>()));
// This fails with a NotImplementedException
var localView = new LocalView<TEntity>(localDbSet.Object);
mockDbSet.Setup(d => d.Local).Returns(localView);