4

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 :(

mgibas
  • 408
  • 4
  • 14

1 Answers1

13

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.

nemesv
  • 138,284
  • 16
  • 416
  • 359
  • The `Returns` call in my own code today had the wrong number of type arguments, even though the `Setup` call had the correct number. This post saved me a lot of trouble. – A.Konzel Jan 05 '16 at 15:49