Один из моих базовых классов репозитория содержит метод:
public abstract class RepositoryBase<T, TDb> : IRepository<T>
where T : IEntity
where TDb : class, IDbEntity, new()
{
protected internal abstract Table<TDb> GetTable();
...
}
Я пишу модульный тест для производного класса репозитория, который содержит реализацию упомянутого метода:
public class CmOptionRepository :
RepositoryBase<ICmOption, CMCoreDAL.DbData.CMOption>, ICmOptionRepository
{
protected internal override System.Data.Linq.Table<CMCoreDAL.DbData.CMOption>
GetTable()
{
return Context.CMOptions;
}
....
}
Здесь: Контекст- это Linq-модель БД, CMOptions - одна из таблиц БД.
Я хочу, чтобы мой метод GetTable () возвращал специальный набор данных.
Я собираюсь смоделировать метод:
System.Data.Linq.Table<CMCoreDAL.DbData.CMOption> table = ...;
Mock<CmOptionRepository> mockRepository =
new Mock<CmOptionRepository>(MockBehavior.Strict);
mockRepository.Setup(mock => mock.GetTable()).Returns(table);
Но не знаю, как создать экземпляр класса System.Data.Linq.Table<CMCoreDAL.DbData.CMOption>
.
Вопрос: как я могуиздеваться над System.Data.Linq.Table<>
?Или, возможно, мне нужно изменить сигнатуру метода, чтобы избежать использования System.Data.Linq.Table<>
класса?
Пожалуйста, сообщите.Любые мысли приветствуются.
PS Я использую Moq.