Я изменил свой тест отображения для использования перегрузки .VerifyTheMappings(TEntity first)
, и вдруг мой тест просто проходит. Я не использовал эту перегрузку раньше, и, поскольку я не совсем уверен, как она работает, я беспокоюсь, что получаю ложное срабатывание.
Я удивлен главным образом потому, что я не думал, что использую автоматическое сопоставление, и я даже еще не сопоставил всю сущность. Так что теперь мне интересно:
Пройдет ли этот тест, потому что должен, или потому, что он на самом деле ничего не тестирует?
Обновление: После дальнейших исследований я обнаружил, что, пока я сопоставляю идентификатор, все работает. Это так и должно быть? Что действительно проверяет .VerifyTheMappings(TEntity first)
?
Мой код:
Конфигурация
Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.DefaultSchema("dbo")
.ConnectionString(ConfigurationManager.ConnectionStrings["Nitro_Empty"].ConnectionString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<UserMap>());
Сущность:
public class InspectionObject : IEntity<int>
{
public virtual int ID { get; set; }
public virtual Project Project { get; set; }
public virtual InspectionObjectType Type { get; set; }
public virtual User CreatedByUser { get; set; }
public virtual DateTime Created { get; set; }
public virtual DateTime LastUpdated { get; set; }
public virtual User LastUpdatedByUser { get; set; }
public virtual string Littera { get; set; }
public virtual string Owner { get; set; }
public virtual string Address { get; set; }
public virtual string Caretaker { get; set; }
public virtual string Remarks { get; set; }
public virtual float PlacementX { get; set; }
public virtual float PlacementY { get; set; }
public virtual float PlacementZ { get; set; }
}
Карта:
public class InspectionObjectMap : ClassMap<InspectionObject>
{
public InspectionObjectMap()
{
Id(i => i.ID).Not.Nullable();
}
}
Тест:
[Test]
public void IspectionObject_MappingsAreOK()
{
var dtenow = DateTime.Now;
dtenow = new DateTime(dtenow.Ticks - (dtenow.Ticks % TimeSpan.TicksPerSecond), dtenow.Kind);
var io = new InspectionObject
{
ID = 1,
Project = Data.Project,
Type = Data.InspectionObjectTypeVilla,
CreatedByUser = Data.Consultant,
Created = dtenow,
LastUpdatedByUser = Data.UserConsultant1,
LastUpdated = dtenow.AddHours(1),
Littera = "15",
Owner = "Fastighetsägare",
Address = "Adress",
Caretaker = "Fastighetsskötare",
Remarks = "Anteckningar",
PlacementX = 1F,
PlacementY = 2F,
PlacementZ = 3F
};
var session = IoC.Resolve<ISession>();
new PersistenceSpecification<InspectionObject>.VerifyTheMappings(io);
}
(да, у меня есть некоторые схемы экспорта / отбрасывания в моих подпрограммах SetUp
и TearDown
, но это все стандартно. Это просто слишком глубоко вложено в инфраструктуру тестирования, построенную вокруг этого приложения, для меня выкопать соответствующие кусочки, потому что это не делает ничего фантастического, просто в модных местах ...)