В моем репо есть метод, который вызывает метод datacontext.Add и возвращает resutl.Entity, например:
var result = _dataContext.Product.Add(product);
await _dataContext.SaveChangesAsync();
return result.Entity;
Теперь я хочу создать макет для EntityEntry<Product>
, но получаю исключение:
Сообщение: Castle.DynamicProxy.InvalidProxyConstructorArgumentsException: Невозможно создать экземпляр прокси-сервера класса: Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry`1 [[Product, Product.Entities, Version = 1.0.0.0, Culture = нейтральный,PublicKeyToken = NULL]].Не удалось найти конструктор без параметров.
Вот мой код метода тестирования:
var productMock = new Mock<EntityEntry<Product>>();
var entity = new Product{Id = 1, Name = "Bag"};
mappingMock.Setup(m => m.Entity).Returns(entity);
var dataContextMock = new Mock<DataContext>(_options);
var productMockSet = new Mock<DbSet<Product>>();
dataContextMock.Setup(a => a.Product)
.Returns(productMockSet.Object);
dataContextMock.Setup(m => m.Product.Add(It.IsAny<Product>())).Returns(productMock.Object);
Что я делаю не так?или есть ли другой способ Assert EntityEntry?