我需要一種方法來僞造Typemock的DateTime.Parse,並使用任何參數調用時返回相同的日期。TypeMock僞造DateTime.Parse
我有一個數據庫字段,存儲加載的字符串被解析爲日期時加載。保存數據的類有一個Load()方法在那裏拷貝DB數據到其性質,解密什麼是加密,並做一些基本的驗證,如:
public class BusinessObject{
public DateTime ImportantDate{get;set;}
...
public void Load(DBObject dbSource){
...
ImportantDate = DateTime.Parse(DecryptionService.Decrypt(dbSource.ImportantDate));
}
}
運行一切運作良好。
我正在嘗試使用TypeMock使用Load方法將一些假數據加載到BusinessObject中進行單元測試。 BusinessObject有太多的屬性,不能從XML反序列化,但DBObject可以,所以我存儲了一些表示有效數據的XML。
它一直運行良好,直到調用DecryptionService來解密數據 - 它不起作用,因爲我的開發機器沒有在加密過程中使用的數據庫證書。我無法僅僅爲了測試而在我的機器上獲得這些信息,那將是一次安全漏洞。
我將此添加到我的單元測試:
Isolate.Fake.StaticMethods<DecryptionService>(Members.ReturnRecursiveFakes);
Isolate.WhenCalled(() => DecryptionService .Decrypt(null)).WillReturn("***");
Isolate.Fake.StaticMethods<DateTime>(Members.ReturnNulls);
Isolate.WhenCalled(() => DateTime.Parse("***" /*DateStr*/)).WillReturn(DateTime.Now.AddYears(2));
其中DecryptionService是僞造的作品,社會保障等敏感字符串「解密」,但無論我給的日期時間我還是什麼參數的第一部分得到一個例外或其他(ArgumentNullException:String引用未設置爲一個對象的實例,如果DateStr爲空,出現FormatException時,它的「*」)
如何(如果)可以覆蓋DateTime.Parse與typemock使它會返回有效的DateTime並傳遞任何無效的參數?