Я провел вечер, пытаясь смоделировать объект, который реализует IQueryable:
public interface IRepo<T> : IQueryable<T>
{
}
Лучшее, что я мог придумать, это что-то вроде этого:
var items = new Item[] {}.AsQueryable();
var repo = new Mock<IRepo>();
repo.Setup(r => r.GetEnumerator()).Returns(items.GetEnumerator());
repo.Setup(r => r.Provider).Returns(items.Provider);
repo.Setup(r => r.ElementType).Returns(items.ElementType);
repo.Setup(r => r.Expression).Returns(items.Expression);
Есть ли ещекраткий способ сделать то же самое?Было бы проще выставить свойство / метод в IRepo, который возвращает IQueryable и просто издеваться так:
repo.Setup(r => r.GetItems()).Returns(new Items[]{ }.AsQueryable());
Но это не то, что я хочу сделать =)