Один из моих базовых классов репозитория содержит метод:
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
.
Вопрос: как издеваться над System.Data.Linq.Table <>
? Или, возможно, мне нужно изменить подпись метода, чтобы избежать использования класса System.Data.Linq.Table <>
?
Пожалуйста, сообщите. Приветствуются любые мысли.
PS Я использую Moq.