2008-12-07 8 views
10

Bạn sẽ thử nghiệm tình huống này như thế nào?Làm thế nào để kiểm tra PersistenceSpecification.VerifyTheMappings lưu loát-NHibernate với danh sách và các đối tượng quan hệ?

Tôi vừa mới bắt đầu xem NHibernate và có lần phát ban đầu tiên tại TDD. Cho đến nay tôi đã thực sự rất thích nó và đã được sử dụng thông thạo-Nhibernate cho bản đồ của tôi về các lớp học.

Tuy nhiên, dường như tôi đã gặp phải một kết thúc chết khi nói đến việc sử dụng phương thức VerifyTheMappings trên PersistenceSpecification.

Về cơ bản tôi có hai lớp, Người nhận và Người nhận danh sách. Lớp RecipientList có một ánh xạ đến người nhận với một thông thạo "HasMany" mối quan hệ:

public class RecipientListMap : ClassMap<RecipientList> 
{ 

    public RecipientListMap() 
    { 
     Id(x => x.ID); 
     Map(x => x.ApplicationID); 
     Map(x => x.Name); 
     Map(x => x.IsDeleted); 
     HasMany<Recipient>(x => x.Recipients).WithKeyColumn("RecipientListID").AsList().LazyLoad(); 
    } 

} 

Tuy nhiên khi tôi sử dụng đoạn mã sau vào thử nghiệm của tôi:

private IList<Recipient> _recipients = new List<Recipient>() 
     { 
      new Recipient { FirstName = "Joe", LastName = "Bloggs", Email = "[email protected]", IsDeleted = false }, 
      new Recipient { FirstName = "John", LastName = "Doe", Email = "[email protected]", IsDeleted = false }, 
      new Recipient { FirstName = "Jane", LastName = "Smith", Email = "[email protected]", IsDeleted = false } 
     }; 

     [Test] 
     public void Can_Add_RecipientList_To_Database() 
     { 
      new PersistenceSpecification<RecipientList>(Session) 
       .CheckProperty(x => x.Name, "My List") 
       .CheckProperty(x => x.Columns, "My columns") 
       .CheckProperty(x => x.IsDeleted, false) 
       .CheckProperty(x => x.ApplicationID, Guid.NewGuid()) 
       .CheckProperty(x => x.Recipients, _recipients) 
       .VerifyTheMappings(); 
     } 

Các lỗi sau đây xảy ra:

failed: System.ApplicationException : Expected 'System.Collections.Generic.List`1[Project.Data.Domains.Recipients.Recipient]' but got 'NHibernate.Collection.Generic.PersistentGenericBag`1[Project.Data.Domains.Recipients.Recipient]' for Property 'Recipients' 

Tôi có thể thấy rằng lỗi là vì tôi đang chuyển vào Danh sách và danh sách được trả lại là PersistentGenericBag, do đó sẽ xảy ra lỗi. Tôi không hiểu làm thế nào bạn giả sử thử nghiệm điều này mặc dù nếu bạn không thể chỉ vượt qua trong một IList?

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

9

Tôi đã sử dụng sai phương pháp trên PeristenceSpecification.

Tôi phải sử dụng CheckList không CheckProperty.

Được!

+0

Hãy chắc chắn không làm như vậy với CheckReference :) –