Advertisement
BradleyUffner

Untitled

Jan 20th, 2018
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.95 KB | None | 0 0
  1.         public static ISetup<T> SetupByName<T>(this Mock<T> mock, string methodName, params Expression<Func<object>>[] args) where T : class
  2.         {
  3.             object[] argTypes = args.Select(a => a.Body.NodeType == ExpressionType.Convert ? ((UnaryExpression)a.Body).Operand.Type : a.Body.Type).ToArray();
  4.             var param = Expression.Parameter(typeof(T), "i");
  5.             var method = typeof(T).GetMethod(methodName, argTypes.Cast<Type>().ToArray());
  6.             if (method == null) { throw new ArgumentException($"{typeof(T).Name} does not contain a method \"{methodName}({string.Join(",",(object[])argTypes)})\".", nameof(methodName)); }
  7.             var callArgs = args.Select(a => a.Body.NodeType == ExpressionType.Convert ? ((UnaryExpression)a.Body).Operand : a.Body);
  8.             var call = Expression.Call(param, method, callArgs);
  9.             var exp = Expression.Lambda<Action<T>>(call, param);
  10.             return mock.Setup(exp);
  11.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement