はい、マッピングが期待どおりに機能していることをテストするときは、クラスレベルでテストし、その個々のクラスの関係をそれぞれテストします。
たとえば、Orderオブジェクトのリストを持つCustomerオブジェクトがある場合、Customerオブジェクトの統合テストを記述して、そのオブジェクトに対してすべてのCRUD操作を実行できることを確認します。次に、注文、住所などのリストを持つなど、Customerオブジェクトが持つすべての関係のテストを作成します。これらのテストは、カスケード挿入/更新/削除や、これらの子コレクションを熱心にフェッチする機能などを対象とします。クエリ。
したがって、クラスレベルでテストしていますが、各クラスのすべての関係をテストしているため、各テストでこのテスト動作を継続する限り、オブジェクトグラフ全体を技術的にテストしています。マップされたクラス。
更新(簡単な例を追加):
public class Customer
{
public int CustomerId { get; set; }
public string CompanyName { get; set; }
public IList<Address> Addresses { get; set; }
public IList<Order> Orders { get; set; }
}
public class Address
{
public int AddressId { get; set; }
}
public class Order
{
public int OrderId { get; set; }
public string Status { get; set; }
public IList<OrderDetail> OrderDetails { get; set; }
}
public class OrderDetail
{
public int OrderDetailId { get; set; }
public string City { get; set; }
}
[TestFixture]
public class CustomerMappingTests
{
private ISession session;
[SetUp]
public void SetUp()
{
session = UnitOfWork.Current.GetSession();
}
[TearDown]
public void TearDown()
{
session.Dispose();
}
[Test]
public void CanGetCustomer()
{
// Arrange
const int customerId = 1;
// Act
var customer = session.Query<Customer>()
.Where( x => x.CustomerId == customerId )
.FirstOrDefault();
// Assert
Assert.NotNull( customer );
Assert.That( customer.CustomerId == customerId );
}
[Test]
public void CanGetCustomerAddresses()
{
// Arrange
const int customerId = 1;
// Act
var customer = session.Query<Customer>()
.Where( x => x.CustomerId == customerId )
.Fetch( x => x.Addresses )
.FirstOrDefault();
// Assert
Assert.NotNull( customer.Addresses.Count > 0 );
}
[Test]
public void CanGetCustomerOrders()
{
// Arrange
const int customerId = 1;
// Act
var customer = session.Query<Customer>()
.Where( x => x.CustomerId == customerId )
.Fetch( x => x.Orders )
.FirstOrDefault();
// Assert
Assert.NotNull( customer.Orders.Count > 0 );
}
[Test]
public void CanSaveCustomer()
{
// Arrange
const string companyName = "SnapShot Corporation";
var customer = new Customer { CompanyName = companyName };
// Act
session.Save( customer );
session.Flush(); // Update the database right away
session.Clear(); // Clear cache
var customer2 = session.Query<Customer>()
.Where( x => x.CompanyName == companyName )
.FirstOrDefault();
// Assert
Assert.NotNull( customer2 );
Assert.That( customer2.CompanyName == companyName );
}
}