Если Find<T>()
- это метод расширения для IRepository
, то я не думаю, что он будет работать, потому что вы имеете дело с типом static
.
Если Find<T>()
является методом для IRepository
, то вы можете установить возвращаемое значение только для repository.Find<Person>()
.
Создайте IEnumerable<>
или IQueryable<>
для возврата Find<>()
(какой бы тип он фактически не возвращал - я не знаю, какой это), и выражение LINQ просто выполнит свою работу над этим в реальном классе. Вам не нужно издеваться над LINQ, потому что это всего лишь фильтрация результатов вашего собственного метода, хотя в производственном процессе, скажем, Entity Framework или LINQ to SQL, все выражение вместо этого будет преобразовано в оптимизированную базу звоните.
Если в вашей настройке вы дадите коллекции предмет с соответствующим идентификатором, вы будете утверждать, что получили его обратно.
Если в вашей настройке вы не дадите коллекции элемент с соответствующим идентификатором, вы будете утверждать, что вы получаете null
(по умолчанию).
Если в вашей настройке вы вернете null
из repository.Find<>()
, вы будете утверждать, что генерируется исключение, потому что вы не можете вызывать методы расширения для null
.