Код: Выделить всё
public static DbSet BuildMockDbSet(this IQueryable source)
where T : class
{
var mock = new Mock();
var sourceList = source.ToList();
mock.As()
.Setup(x => x.GetAsyncEnumerator())
.Returns(new TestDbAsyncEnumerator(sourceList.GetEnumerator()));
mock.As()
.Setup(x => x.Provider)
.Returns(new TestDbAsyncQueryProvider(source.Provider));
mock.As()
.Setup(x => x.Expression)
.Returns(source.Expression);
mock.As()
.Setup(x => x.ElementType)
.Returns(source.ElementType);
mock.As()
.Setup(x => x.GetEnumerator())
.Returns(sourceList.GetEnumerator());
mock.Setup(s => s.AsNoTracking()).Returns(mock.Object);
mock.Setup(x => x.Include(It.IsAny())).Returns(mock.Object);
mock.Setup(x => x.FirstOrDefault(It.IsAny())).Returns((Expression x) => sourceList.FirstOrDefault(x as Func));
mock.Setup(d => d.Add(It.IsAny())).Callback((s) =>
{
sourceList.Add(s);
}).Returns((T v) => v);
return mock.Object;
}
Однако для метода FirstOrDefault это не работает. Я хотел бы просто получить любой предикат, который был задан изначально, и передать его методу FirstOrDefault исходного списка. Но я не могу настроить это правильно.

В сообщении об исключении говорится только о том, что то, что я делаю, недопустимо, а не о том, почему и как это должно быть.
Подробнее здесь: https://stackoverflow.com/questions/793 ... ed-objects
Мобильная версия