如何将方法作为lambda表达式发送到moq.setup

时间:2013-05-01 00:39:56

标签: moq

我的目标是能够将setup方法保存在一个地方,而不是我所有的测试类。我想构建一个lamda表达式并直接将它发送到set up方法。 但是我只能发送2种类型的lamda表达式进行设置, 没有任何返回类型,或只返回类型没有参数。 有没有办法解决? 如果我做了以下示例设置不让程序编译。

       Mock<Message> mock = new Mock<Message>();
        ParameterExpression instance =
            Expression.Parameter(typeof(Message), "i");
        ParameterExpression param =
            Expression.Parameter(typeof(string), "str");
                  Expression methodCall =
            Expression.Call(instance, typeof(Message).GetMethod("gettime"),param);
        var lambda =
            Expression.Lambda<Func<Message,string,string>>(methodCall, instance,param);

Message类看起来像。

     public class Message
    {

        public virtual string gettime (string str)
        {
            return str + DateTime.Now.ToString();

        }
    }

1 个答案:

答案 0 :(得分:0)

Ufuk是对的,你应该开始进行简单的测试。如果你有这么多的复杂性,你做错了。一些选项基于我认为是您的目标:

  • 使用所有测试继承自
  • 的基类
  • 使用帮助方法
  • 允许复制。测试应为damp not dry