2011-11-10 6 views
0

私は、PersistenceSpecificationのCheckListメソッドでプライベートリストをテストしようとしています。 しかし、私はかなりそこに着いていません。誰でも助けてくれますか?PersistenceSpecificationプライベートプロパティ付きチェックリスト

エンティティ:

public class Item: Entity<int> 
{ 
    //values in list are used in later (internal) calculations 
    private readonly IList<PurchaseInfo> _purchaseInfo = new List<PurchaseInfo>(); 
    public virtual string SupplierCode {get; set;} 
} 

地図:

public class ItemMap: ClassMap<Item> 
    { 
     public ItemMap() 
     { 
      Table("ITEM"); 

      Id(u => u.Id).Column("ITEMNR").GeneratedBy.Assigned(); 
      Map(u => I.SupplierCode).Column("SUPPLIERNR"); 
      HasMany<PurchaseInfo>(Reveal.Member<Item>("_purchaseInfo")) 
       .KeyColumns.Add("ITEMNR") 
       .KeyColumns.Add("SUPPLIERNR").PropertyRef("SupplierCode"); 
     } 
    } 

コンパイラがチェックリストとして期待していることを訴えるテスト(これは私は現在、それをやろうとしている方法です)

[Test] 
    public void CanMapItem() 
    { 
     new PersistenceSpecification<Item>(Session) 
      .CheckProperty(a => a.Id, 1234) 
      .CheckProperty(a => a.SupplierCode, "S01") 
      .CheckList<Item, PurchaseInfo>(Reveal.Member<Item>("_purchaseInfo"), new List<PurchaseInfo> 
                    { 
                     new PurchaseInfo() 
                      { 
                       ItemNr = 1234, 
                       SupplierCode = "S01" 
                      }, 
                     new PurchaseInfo() 
                      { 
                       ItemNr = 1234, 
                       SupplierCode = "S02" 
                      } 
                    }) 
      .VerifyTheMappings(); 
    } 

最初の引数

System.Linq.Expressions.Expression<System.Func<Item, System.Collections.Generic.IEnumerable<PurchaseInfo>> 

Reveal.Member 2つのオーバーロード、一般的なものと一つの特殊を有する

System.Linq.Expressions.Expression<System.Func<Item, object>> 

答えて

1

Reveal.Memberを返しています。特別なものを使用してください:

.CheckList<Item, PurchaseInfo>(Reveal.Member<Item, IEnumerable<PurchaseInfo>>("_purchaseInfo"), 
関連する問題