Some of my tests require that I need to test the date time results (like time stamps etc.). In order to be able to test the date time string I created a simple DateTime
abstraction that I'm going to use in other projects later. It should replace direct calls to DateTime.(Utc)Now
. Or should I rather call it TestValue
instead of ConstValue
?
public abstract class DateTimeProvider
{
public abstract DateTime Value { get; }
public DateTime? ConstValue { get; set; }
public static implicit operator DateTime(DateTimeProvider dateTimeProvider)
{
return dateTimeProvider.Value;
}
}
public class NowDateTimeProvider : DateTimeProvider
{
public override DateTime Value
{
get { return ConstValue ?? DateTime.Now; }
}
}
public class UtcNowDateTimeProvider : DateTimeProvider
{
public override DateTime Value
{
get { return ConstValue ?? DateTime.UtcNow; }
}
}