Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Moq TargetParameterCountException with lambda expression

Tags:

c#

lambda

moq

nunit

I have strange problem: when I use mu repository stub I get strange exception:

System.Reflection.TargetParameterCountException

Creating stub (in a test method):

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

Interface:

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

And on every call to FindAll throws that error :( I'm mocking in that fashion in many other places, but now I can't find source of that strange problem :(

like image 839
mgibas Avatar asked Dec 12 '22 08:12

mgibas


1 Answers

You have missed a pair of parenthesis after the AsQueryable call:

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

The Returns method has multiple overloads and most of them takes a Func and without the parenthesis it uses one of these overloads and because you haven't specified a parameter that's why it throws an exception.

like image 150
nemesv Avatar answered Dec 29 '22 10:12

nemesv