Можно ли имитировать выражение Linq через Moq, используя универсальный класс, такой как ~ 1Repository. ~ IRepository вводится через IoC, например StructureMap или Windsor?
КОД ДЛЯ ПРОВЕРКИ:
var person = _repository.Find<Person>()
.Where(p => p.Id == person.Id).SingleOrDefault();
ТЕСТ:
var repository = new Mock<IRepository>();
repository.Setup(i => i.Find<Person>()
.Where(p => p.Id == person.Id).SingleOrDefault())
.Returns(person).Verifiable();
ИСКЛЮЧЕНИЕ:
System.ArgumentException: неверная настройка метода, не являющегося членом: i => i.Find().Where(p => p.Id == "Fred").SingleOrDefault()
РЕШЕНИЕ
using System.Linq;
...
_container.GetMock<IRepository>.Setup(i => i.Find<Person>())
.Returns(new List{person}.AsQueryable()).Verifiable();
...