2011-01-12 3 views
1

これは実際に私の最初の質問Stackoverflowです。私はそれが最後ではないことを願っていますし、うまくいけば私は自分自身でいくつかの答えに貢献しますInverse HasMany関係のユニットテストにPersistenceSpecificationとCheckListを使用できますか?

私の質問は簡単です。私は逆のHasMany関係をテストしているNUnitテストに悩まされています。 私はそれをデバッグするたびに、出力は "実際のカウントは期待されたカウントと等しくない"となります。私はこの問題についてネットに関する広範な研究を行ってきましたが、そのような単体テストを行うことは不可能だと主張する人々もいます。

これは私の例です。 EmployeeMappingため コード:ここで

Id(x => x.ID).GeneratedBy.Identity(); 
HasMany(x => x.PositionHistory).KeyColumn("Employee_id").Inverse().Cascade.All(); 

がEmployeePositionMappingのコードです:

Id(x => x.ID).GeneratedBy.Identity(); 
References(x => x.EmployeeAtPosition).Cascade.All().Nullable(); 

ユニットテストはこのようなものです:

var position2 = new EmployeePosition(); 
      position2.ExtraBenefit = 353.00; 
      position2.Salary = 23300.00; 
      position2.Region = region; 
      position2.Department = department; 
      position2.Year = "2010"; 
      position2.Comment = "kommentar igen..."; 
      position2.History = true; 
var positionList = new List<EmployeePosition>(); 

    positionList.Add(position2); 

    new PersistenceSpecification<Employee>(Session, new CustomEqualityComparer<Employee, long>()) 
        .CheckProperty(p => p.ID, Int64.Parse("1")) 
        .CheckList(p => p.PositionHistory, positionList, (emp, empPosition) => emp.AddEmployeePosition(empPosition)) 
        .VerifyTheMappings(); 

私はNULL可能()属性を交換したいと思います参照EmployeeAtPositionプロパティのNot.Nullable()。

エンティティとトランジェントを比較する気になるエンティティベースクラスがあります。 AddEmployeePosition()は、Employee.PositionHistoryとEmployeePosition.EmployeeAtPositionの両方の関係を維持管理します。

出力でNhibernate SQLを見てもOKです。しかし何らかの理由で、私が用意したリスト(positionList)と同じではありません。

その他の有用な事実:私はNhibernate 3.0と流暢なNhibernateバイナリを実行しています。 3日前にそれらをダウンロードしました。マッピングテストを行うためのSQLite InMemoryの使用。

私はあなたのヒントは私を与える可能性のあるすべての良い新しい角度を本当に感謝し...

/よろしくBacceSR-非常に雪のストックホルムから。

答えて

4

Hmm no answers。自分自身でこれにもっと答えてください:D。 私はいくつかのグーグルで答えを見つけました。現在、CheckListメソッドにはいくつかの問題があります。私はCheckComponentを代わりに使用し、正常に動作しました。現在、 "Parent"オブジェクトは "Children"の前に挿入されているため、エラーは発生しません。 CheckListはまったく動作しなかった反対をしようとしました...

0

私はこの夜もこの問題を抱え、この非常に奇妙なエラーメッセージで約2時間を費やしました。これを知るためにグーグル・グーグルがコードのすべての行をチェックするのに多くの時間を無駄にした。

このpostによれば、単にinverse = trueで使用することはできません。残念ながら、CheckComponentListは私のために働かなかった、私は同じエラーを持っていた。

逆キーワードIMHOについての死んだ単純なexplanationも、本当に悪い言葉です。

+0

私の以前の質問に対するコメント:-)私は今、PersistenceSpecificationを使ってマッピングを検証することができないことを理解しました。エンティティ間の多くの関係はインバース・タイプであるため、このマッピング・テストを手動で行いました。 –

関連する問題