У меня есть служба, настроенная таким образом.
public Interface IDataService : IDisposable
{
IQueryable<T> Set<T>() where T : class;
IDbSet<T> WritableSet<T>() where T : class;
}
IDataService наследуется DataService.
public abstract class DataService : IDataService
{
public IDataContext DataContext { get; private set; }
public IQueryable<T> Set<T>() where T : class
{
return DataContext.Set<T>().AsNoTracking();
}
public IDbSet<T> WritableSet<T>() where T : class
{
return DataContext.Set<T>();
}
public AddResult<T> Add<T>(T obj) where T : class, IPersistentEntity
{
if (obj == null)
return new AddResult<T>() { IsValid = false };
else
{
if (obj.Id == Guid.Empty)
WritableSet<T>().Add(obj);
bool success = DataContext.SaveChanges() > 0;
return new AddResult<T>() { Entity = obj, IsValid = success };
}
}
}
А DataService наследуется EntityService.
public class EntityService : DataService
{
public EntityService(IDataContext DataContext) : base(DataContext)
{
}
public void EntityStarted(Guid Id)
{
var a = GetWriteableById<Entity>(Id);
a.Status = 1;
DataContext.SaveChanges();
}
}
Этот EntityService используется в одном из моих компонентов.Объект EntityService создается и передается в конструктор компонента.
Я использую Moq для выполнения некоторых тестов компонента, и для этого план состоял в том, чтобы смоделировать EntityService таким образом, чтобы EntityService использовал поддельный контейнер БД сфиктивные данные для базы данных, как операции.Но у меня не самая лучшая идея, чтобы высмеивать это с минимальным количеством нового кода.
Наименее привлекательная идея, которая у меня есть, - создать поддельный класс EntityService с использованием интерфейса и иметь собственную реализацию, подходящую длятесты.
Помощь приветствуется!:)