Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static ISetup<T> SetupByName<T>(this Mock<T> mock, string methodName, params Expression<Func<object>>[] args) where T : class
- {
- object[] argTypes = args.Select(a => a.Body.NodeType == ExpressionType.Convert ? ((UnaryExpression)a.Body).Operand.Type : a.Body.Type).ToArray();
- var param = Expression.Parameter(typeof(T), "i");
- var method = typeof(T).GetMethod(methodName, argTypes.Cast<Type>().ToArray());
- if (method == null) { throw new ArgumentException($"{typeof(T).Name} does not contain a method \"{methodName}({string.Join(",",(object[])argTypes)})\".", nameof(methodName)); }
- var callArgs = args.Select(a => a.Body.NodeType == ExpressionType.Convert ? ((UnaryExpression)a.Body).Operand : a.Body);
- var call = Expression.Call(param, method, callArgs);
- var exp = Expression.Lambda<Action<T>>(call, param);
- return mock.Setup(exp);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement