我遇到了一些測試流利NHibernate的持久性問題。我不確定這是否僅僅是我的理解不夠或對測試的期望不正確。如果是這樣,有沒有人有任何建議如何最好地爲這部分DAL設置單元測試?測試「一對多」關係時重複?
我有一個一對多的關係,一對類Client
和Facility
:
一:
Client
可以有許多Facility
使用該FluentNHibernate的映射結構,我想預計他們應該看起來像這樣:
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個客戶端的Client
表和一個帶有兩個不同Id的Facility
表,即使我傳入一個對象。
[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