2011-08-19 37 views
2

我想使用MB單位Mirror.ForObject()測試以下類Private Func<>委託方法。但它並不反映這種方法。請提供一種方法來做到這一點?使用MBUnit的鏡像的私人Func委託方法的單元測試

功能的代碼類

public class AccountTransaction 
    { 
     private static readonly Func<decimal, decimal, decimal> NetAmountCalculator = (discountedValue, discountPecentage) => discountPecentage == 100 ? 0 : Math.Round(discountedValue/(1 - (discountPecentage/100)), 2); 
    } 

試驗方法

 /// <summary> 
     /// NetAmountCalculator in normal flow 
     /// </summary> 
     [Test] 
     public void NetAmountCalculatorTest() 
     { 
      var cashTransaction = Mirror.ForObject(new AccountTransaction()); 
      decimal discountedAmount = 90; 
      decimal discountPecentage = 10; 
      cashTransaction["NetAmountCalculator"].Invoke(discountedAmount , discountPecentage); 
      Assert.IsTrue(true); 
     } 

我從google code

回答

3

NetAmountCalculator簡稱MBUint help還有另一個很好的幫助是你的類的。這不是一個方法財產,因此,你不能調用它(即使它實際上是一個代表,所以它看起來像一個方法)。你需要做的是獲得該字段的,以便正確投射它,然後纔可以評估返回的結果。

var cashTransaction = Mirror.ForObject(new AccountTransaction()); 
decimal discountedAmount = 90; 
decimal discountPecentage = 10; 
object fieldValue = cashTransaction["NetAmountCalculator"].Value; 
var func = (Func<decimal, decimal, decimal)fieldValue; 
decimal actualResult = func(discountedAmount , discountPecentage); 
+0

非常感謝。它工作很好。 – Elangesh