我有一个奇怪的问题:当我使用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 都会引发错误:(我在很多其他地方以这种方式嘲笑,但现在我找不到那个奇怪问题的来源:(
答案 0 :(得分:13)
AsQueryable
来电后你错过了一对括号:
repositoryStub.Setup(m => m.FindAll(It.IsAny<Expression<Func<User,bool>>>())).Returns(TestGlobals.TestUsers.AsQueryable<User>());
Returns
方法有多个重载,大多数都使用Func,没有括号,它使用其中一个重载,因为你还没有指定一个参数,这就是为什么它会抛出一个异常。