2013-05-01 53 views
0

我的目標是能夠將設置方法保留在一個地方而不是我所有的測試類。我想構建一個lamda表達式並將其發送到設置方法直。 但是我只能發送兩種類型的lamda表達式來設置, 沒有任何返回類型,或者只返回沒有參數的類型。 有沒有辦法解決這個問題? 如果我做了下面的例子安裝程序不讓程序編譯。如何將方法作爲lambda表達式發送到moq.setup

 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(); 

     } 
    } 
+3

我建議不要在單元測試中使用這種複雜的代碼。他們應該簡單易懂。 – 2013-05-01 00:46:16

回答

0

Ufuk是對的,你應該拍攝簡單的測試。如果你有這麼多的複雜性,你做錯了。基於關的什麼,我相信有些選項是你的目標:

  • 使用一個基類,所有的測試繼承
  • 使用一個輔助方法
  • 允許重複。測試應該是damp not dry