2011-07-28 27 views
0

如果我想單元測試具有引用屬性的實體,最佳實踐是什麼?如何使用nhibernate單元測試引用屬性

BlogEntry通過外鍵引用User對象。現在我使用session.Load來避免異常,因爲外鍵不能包含空值。

我可以改變它嗎?我不希望我的單元測試在db中包含對「真實」用戶的引用。

public class BlogEntry { 
      public virtual int ID {get;set;} 
      public virtual User CreatedBy {get;set;} 
      public virtual string Text {get;set;} 
     } 

我目前使用下面的測試方法:

 [Test] 
     public void Create_blog_entry() 
     { 
      using (var session = sessionFactory.OpenSession()) 
      using (var trans = session.BeginTransaction()) 
      {    
       var entry = new BlogEntry(){ 
       Text = "Lorem ipsum", 
       CreatedBy = session.Load<User>(1)     
       }; 

       session.Save(entry); 
       trans.Rollback(); 
      } 
     } 

回答

2
[Test] 
public void Create_blog_entry() 
{ 
    using (var session = sessionFactory.OpenSession()) 
    using (var trans = session.BeginTransaction()) 
    { 
     var user = new User { Id = 1 }; 
     session.Save(user); 

     var entry = new BlogEntry() 
     { 
      Text = "Lorem ipsum", 
      CreatedBy = user 
     }; 

     session.Save(entry); 
     trans.Rollback(); 
    } 
} 
+0

謝謝!當我知道如何時,現在感覺很明顯.. :) –

相關問題