Вместо написания метода в viewmodel для проверки DOB, вы можете написать собственный валидатор DOB, например:
public static ValidationResult DOBValidator(DateTime DOB)
{
if (DOB!= null && DOB.Date != DateTime.MinValue.Date)
{
int age = DateTime.Now.Year - DOB.Year;
if (age < 18)
{
return new ValidationResult("Sorry, age should be more than 18 years");
}
}
return ValidationResult.Success;
}
}
затем вы можете украсить свой объект DOB в viewmodel чем-то вроде:
[CustomValidation(typeof(ViewModelClassName), "DOBValidator")]
и в своем модульном тесте вы можете просто вызвать метод viewmodel и передать фиктивное значение datetime:
DateTime testDOB = DateTime.Now.AddYears(-18);
ValidationResult result = ViewModelObject.DOBValidator(testDOB);
Assert.AreEqual(ValidationResult.Success, result, "The ValidationResult was incorrect");
Надеюсь, это поможет.