Datetime.Now 單元測試隔離
參考 C# 單元測試 - 模擬系統時間 DateTime.Now , C# 存取修飾詞 - internal
//簡單做
private DateTime? _now;
internal DateTime Now
{
get { return _now.HasValue ? _now.Value : DateTime.Now; }
set { _now = value; }
}
//統一用一個靜態物件管理
public static class AppTime
{
private static Func<DateTime> _now;
public static DateTime Now
{
get
{
if (_now == null) Reset();
return _now();
}
internal set
{
_now= () => value;
}
}
internal static void Reset()
{
_now= () => DateTime.Now;
}
}
internal 不同專案就無法存取
Properties\AssemblyInfo.cs 新增
[assembly: InternalsVisibleTo("App.Tests")]
這樣設定可以讓 App.Tests 存取internal
如果內容有誤請多鞭策謝謝