2009-06-18 34 views
1

有沒有什麼方法可以編寫集成測試來測試FetchMode.Eager是否正常工作?我想在檢索MySubObject時驗證它沒有進入數據庫。如何正確測試NHibernate FetchMode.Eager?

代碼:

public MyObject GetEager(string name) 
{ 
    return Session 
     .CreateCriteria(typeof(MyObject)) 
     .SetFetchMode("MySubObject", FetchMode.Eager) 
     .Add(Restrictions.Eq("Name", name)) 
     .UniqueResult<MyObject>(); 
} 

回答

1

如何這樣的事情;

MyObject testObject = new MyObject(); 
testObject.GetEager("a name"); 
testObject.Session.Close(); 
Assert.AreEqual(testObject.MySubObject.Id, 3425); 

通過關閉會話,然後試圖訪問關聯的對象,如果對象不是即時加載它會拋出異常。交談,如果它是eagrly加載NHibernate不會嘗試訪問數據庫,所以不會拋出異常。

+0

呀,這是非常相似的,我們是如何結束的解決問題的解釋。我們使用NHibernateSession.Current.Dispose()(其中NHibernateSession是我們的基礎體系結構中的包裝類 - s#arp體系結構) – 2009-06-19 12:26:22