Fluent NHibernateの永続性をテストするいくつかの問題が出ています。私はこれが単に私の分かっていないことや、テストの不適切な期待であるかどうかは分かりません。もしそうなら、DALのこの部分の単体テストをどのようにして設定するのがよいのか、誰にもアドバイスがありますか?「一対多」関係をテストする際に重複を取得していますか?
ワン:
私は1対多の関係を持つクラス
Client
とFacility
のペアを持ってClient
このFluentNHibernateのマッピング構造を使用して、多くのFacility
を持つことができ、私は思います期待どおりに見えるはずです:
public class ClientMapping : DataMapping<Client>
{
public ClientMapping()
{
HasMany(client => client.Facilities)
.Inverse()
.Cascade
.All();
}
}
public class FacilityMapping : DataMapping<Facility>
{
public FacilityMapping()
{
References(fac => fac.Owner);
}
}
私はFNHのアドバイスに従いました以下のようなテストを作成するときに実行すると - 私は単一のオブジェクトを渡しているにもかかわらず、2つのクライアントとFacility
テーブルの2つの異なるIDを持つClient
テーブルを取得します。私が見つけた
[Test]
public void CanCorrectlyCreateFacilityTable()
{
_client = new Client {Name = "Preston"};
new PersistenceSpecification<Facility>(session, new DataEqualityComparer())
.CheckProperty(f => f.Id, 1)
.CheckProperty(f => f.Name, _facility1.Name)
.CheckReference(f => f.Owner, _client)
.VerifyTheMappings();
new PersistenceSpecification<Facility>(session, new DataEqualityComparer())
.CheckProperty(f => f.Id, 2)
.CheckProperty(f => f.Name, _facility2.Name)
.CheckReference(f => f.Owner, _client)
.VerifyTheMappings();
}
最寄のQ/Aは、以下のものをですが、最初のClient
テストを実行している、私は、データベースの状態ので、おそらく(同じ結果を得るように見える場合でも、各試験のためにリセット自体):
Cascade persist creates duplicate rows?
Hibernate - one to Many relationship