我已經爲使用IValidatableObject的一些實體框架對象編寫了一些自定義驗證,並且我已經爲對象添加了一些DataAnnotations用於驗證。單元測試實體框架驗證
我想測試驗證是否滿足所需的驗證(確保自定義驗證正在工作,並且所做的任何更改都會保留這些數據註釋等)但我無法確定如何在驗證中運行驗證無需調用的SaveChanges(我不想做,因爲如果有一個問題,驗證不起作用,將寫入到數據源)單元測試
我想要做這樣的事情:
[TestMethod]
public void InvalidStartDate_StartDateAfterEndDate()
{
var header = new Header()
{
StartDate = DateTime.Now.AddDays(15),
EndDate = DateTime.Now.AddDays(-15)
};
var actual = header.IsValid();
var expected = false;
Assert.AreEqual(expected, actual);
}
或類似
[TestMethod]
public void InvalidStartDate_StartDateAfterEndDate()
{
var header = new Header()
{
StartDate = DateTime.Now.AddDays(15),
EndDate = DateTime.Now.AddDays(-15)
};
var actual = header.GetValidationErrors().Count;
var expected = 0;
Assert.AreEqual(expected, actual);
}
但似乎無法找到一種方法來獲取驗證運行而不調用保存更改,有沒有辦法做到這一點?
db.GetValidationErrors()應該工作..你可以發佈你的Header類的代碼? – Luxspes 2012-07-17 00:53:53