Как проверить PersistenceSpecification свободно-NHibernate на это.VerifyTheMappings со списками и реляционными объектами?
как бы вы протестировали этот сценарий?
Я только начал смотреть в NHibernate и мой первый баш в TDD. До сих пор мне это очень нравилось, и я использовал fluent-Nhibernate для отображения классов.
однако я, кажется, попадаю в тупик, когда дело доходит до использования метода VerifyTheMappings на PersistenceSpecification.
по существу у меня есть два класса, получатель и RecipientList. Класс RecipientList имеет сопоставление с Получатель с беглым отношением "Хасманы":
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();
}
}
однако, когда я использую следующий код в своем тесте:
private IList<Recipient> _recipients = new List<Recipient>()
{
new Recipient { FirstName = "Joe", LastName = "Bloggs", Email = "joe@bloggs.com", IsDeleted = false },
new Recipient { FirstName = "John", LastName = "Doe", Email = "john@doe.com", IsDeleted = false },
new Recipient { FirstName = "Jane", LastName = "Smith", Email = "john@smith.com", 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();
}
возникает следующая ошибка:
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'
Я вижу, что ошибка заключается в том, что я передаю список, и возвращаемый список является PersistentGenericBag, поэтому выдает ошибку. Я не понимаю, как вы предполагаете проверить это, если вы не можете просто пройти в IList?
любая помощь будет оценили.
1 ответов
Ну stupidely я использовал неправильный метод PeristenceSpecification.
Я должен был использовать контрольный список, а не CheckProperty.
ужас!