Я думаю, что ваша проблема скорее ошибка дизайна.Я бы вставил текущую дату в качестве необязательной зависимости, чтобы убедиться, что я могу тестировать с любым значением, которое я хочу.
Давайте рассмотрим пример с этим небольшим сервисом, который у вас может быть:
(используйте все, что вам нравится в качестве DI)
public class MyService {
// Private variables that will be initialized by constructor
private readonly DateTimeOffset now;
public MyService(MyFirstDependency dependency, DateTimeOffset now = DateTimeOffset.Now) {
// Assign here your private variables
this.now = now;
}
public void ValidateDateIsNotBefore3MonthsAgo(DateTimeOffset myDateToValidate) {
if (!myDateToValidate.AddMonths(3).Date >= now.Date) {
throw new WhateverYouWantException("Date is before 3 months ago");
}
}
}
Таким образом, когда вы создаете экземпляры своих тестов, вы можете передать DateTimeOffset со значением по вашему выбору.Вы больше не зависите от текущей даты.
edit : я забыл, что вы также можете использовать Fakes , чтобы высмеивать текущую дату без необходимости изменять ваш код,но доступно не для всех версий Visual Studio