Moq TargetParameterCountException с лямбда-выражением - PullRequest
4 голосов
/ 03 ноября 2011

У меня странная проблема: когда я использую заглушку mu репозитория, я получаю странное исключение:

System.Reflection.TargetParameterCountException

Создание заглушки (в тестовом методе):

var repositoryStub = new Mock<IRepository<User>>();
repositoryStub.Setup(m => m.FindAll(It.IsAny<Expression<Func<User,bool>>>())).Returns(TestGlobals.TestUsers.AsQueryable<User>);

Интерфейс:

IQueryable<T> FindAll(System.Linq.Expressions.Expression<Func<T, bool>> whereExpression);

И при каждом вызове FindAll выдает эту ошибку :( Я издеваюсь таким образом во многих других местах, но теперь я не могу найти источник этой странной проблемы: (

1 Ответ

13 голосов
/ 03 ноября 2011

Вы пропустили пару скобок после вызова AsQueryable:

repositoryStub.Setup(m => m.FindAll(It.IsAny<Expression<Func<User,bool>>>())).Returns(TestGlobals.TestUsers.AsQueryable<User>());

Метод Returns имеет несколько перегрузок, и большинство из них принимает Func, и без скобок он использует одну из этих перегрузок, и поскольку вы не указали параметр, поэтому он вызывает исключение.

...