而是在視圖模型編寫方法來驗證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財產視圖模型的東西,如:
[CustomValidation(typeof(ViewModelClassName), "DOBValidator")]
在你的單元測試,你可以只調用視圖模型方法,並通過一個虛擬的日期時間值:
DateTime testDOB = DateTime.Now.AddYears(-18);
ValidationResult result = ViewModelObject.DOBValidator(testDOB);
Assert.AreEqual(ValidationResult.Success, result, "The ValidationResult was incorrect");
希望這有助於。
時間服務的替代方法是DateTime.Now的靜態替換,它可以被刪除。像https://gist.github.com/1025274一樣 – 2011-06-14 16:31:45