Я подозреваю, что это проблема:
return (new List<Abc>() { new Abc() }) as IQueryable<Abc>;
List<T>
не реализует IQueryable<T>
, поэтому всегда вернет ноль.Позвоните AsQueryable
, чтобы преобразовать его вместо этого:
return new List<Abc>().AsQueryable();
Кроме того, это причина, по которой вы предпочитаете кастовать больше as
в большинстве ситуаций: если вы просто бросилиIQueryable<Abc>
, вы получили бы исключение на линии, которая действительно вызывала проблему.Вы должны использовать as
только тогда, когда не является ошибкой для преобразования в "fail".Оператор as
должен почти всегда сопровождаться тестом на недействительность.
(Обратите внимание, что это поведение само по себе не имеет ничего общего с насмешками или Moq. Это просто поведение as
оператор ...)