Wie würden Sie dieses Szenario testen?Wie testet man die PersistenceSpecification von fluent-NHibernate.VerifyTheMappings mit Listen und relationalen Objekten?
Ich habe gerade angefangen in NHibernate zu suchen und meine erste Bash bei TDD. Bisher habe ich es wirklich genossen und fluid-Nihbernate für meine Zuordnung der Klassen verwendet.
Allerdings scheint ich eine Sackgasse zu treffen, wenn es darum geht, die VerifyTheMappings-Methode auf PersistenceSpecification zu verwenden.
Im Wesentlichen habe ich zwei Klassen, Recipient und RecipientList. Die RecipientList Klasse hat eine Zuordnung zum Empfänger mit einer fließend "HasMany" Beziehung:
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();
}
}
Jedoch, wenn ich den folgenden Code in meinem Test verwenden:
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();
}
Der folgende Fehler tritt auf:
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'
Ich kann sehen, dass der Fehler liegt, weil ich in einer Liste übergeben und die zurückgegebene Liste ist ein PersistentGenericBag, daher einen Fehler zu werfen. Ich verstehe nicht, wie Sie das testen, wenn Sie nicht einfach eine IList einreichen können?
Jede Hilfe wäre willkommen.
Achten Sie darauf, nicht mit CheckReference :) –