1
我有一個存儲庫類,使用NHibernate會話將對象持久存儲到數據庫。默認情況下,存儲庫不使用顯式事務 - 這由調用者來管理。我有以下的單元測試來測試我的NHibernate的管道:NHibernate - 在查詢之前刷新?
[Test]
public void NHibernate_BaseRepositoryProvidesRequiredMethods()
{
using (var unitOfWork = UnitOfWork.Create())
{
// test the add method
TestRepo.Add(new TestObject() { Id = 1, Name = "Testerson" });
TestRepo.Add(new TestObject() { Id = 2, Name = "Testerson2" });
TestRepo.Add(new TestObject() { Id = 3, Name = "Testerson3" });
// test the getall method
var objects = TestRepo.GetAll();
Assert.AreEqual(3, objects.Length);
// test the remove method
TestRepo.Remove(objects[1]);
objects = TestRepo.GetAll();
Assert.AreEqual(2, objects.Length);
// test the get method
var obj = TestRepo.Get(objects[1].Id);
Assert.AreSame(objects[1], obj);
}
}
的問題是該行
Assert.AreEqual(3, objects.Length);
測試失敗,因爲對象名單從GetAll
方法返回的是空的。如果我在插入三個對象後立即手動刷新會話,則該部分測試通過。我在會話中使用默認的FlushMode,並根據文檔,它應該在運行查詢之前刷新以檢索所有對象,但顯然不是。我錯過了什麼?
編輯:我使用SQLite的單元測試場景中,如果說有什麼區別。