У меня есть класс адаптера для Linq-to-Sql:
public interface IAdapter : IDisposable
{
Table<Data.User> Activities { get; }
}
Data.User - это объект, определенный Linq-to-Sql, указывающий на таблицу User в постоянстве.
Реализация этого выглядит следующим образом:
public class Adapter : IAdapter
{
private readonly SecretDataContext _context = new SecretDataContext();
public void Dispose()
{
_context.Dispose();
}
public Table<Data.User> Users
{
get { return _context.Users; }
}
}
Это упрощает проверку уровня персистентности в модульном тестировании, поскольку я могу просто вернуть любую коллекцию данных, которую я хочу для пользователей (Rhino.Mocks):
Expect.Call(_adapter.Users).Return(users);
Проблема в том, что я не могу создать объект 'users', так как конструкторы недоступны, а класс Table запечатан. Один из вариантов, который я попробовал, - просто заставить IAdapter возвращать IEnumerable или IQueryable, но проблема в том, что у меня нет доступа к методам, которые предоставляет ITable (например, InsertOnSubmit ()). Есть ли способ создать ложную таблицу в сценарии модульного тестирования, чтобы я мог стать счастливым разработчиком TDD?