オーバーロードを使用するようにマッピング テストを変更した.VerifyTheMappings(TEntity first)
ところ、突然テストがパスしました。私は以前にそのオーバーロードを使用したことがなく、それがどのように機能するかよくわからないため、誤検知が発生するのではないかと心配しています.
主に驚いたのは、自動マッピングを使用しているとは思っていなかったためです。また、エンティティ全体をまだマッピングしていません。だから今私は疑問に思っています:
このテストに合格するのは、合格する必要があるからですか、それとも実際には何もテストしていないからですか?
更新:さらに調査した結果、ID をマップする限り、すべてが機能することがわかりました。これが本来あるべき姿ですか?.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
ますが、それはすべて標準的なものです。このアプリケーションを中心に構築されたテスト フレームワークにネストされすぎているため、関連する部分を掘り下げることはできません。派手なことをするのではなく、ただ派手な場所で...)