【发布时间】:2008-12-18 20:29:11
【问题描述】:
我有以下单元测试方法:
void TestOrderItemDelete()
{
using (new SessionScope())
{
var order = Order.FindById(1234);
var originalItemCount = order.OrderItems.Count;
Assert.IsTrue(originalCount > 0);
var itemToDelete = order.OrderItems[0];
itemToDelete.DeleteAndFlush(); // itemToDelete.Delete();
order.Refresh();
Assert.AreEqual(originalCount - 1, order.OrderItems.Count);
}
}
从 DeleteAndFlush 命令后的评论中可以看出,我必须将其从简单的 Delete 更改为通过单元测试。为什么是这样?对于我添加 OrderItem 的其他单元测试,情况并非如此。这工作得很好:
void TestOrderItemAdd()
{
using (new SessionScope())
{
var order = Order.FindById(1234);
var originalItemCount = order.OrderItems.Count;
var itemToAdd = new OrderItem();
itemToAdd.Order = order;
itemToAdd.Create(); // Notice, this is not CreateAndFlush
order.Refresh();
Assert.AreEqual(originalCount + 1, order.OrderItems.Count);
}
}
所有这些都是在我开始使用 Order.OrderItems 关系映射的延迟实例化时出现的,并且必须在测试周围添加 using(new SessionScope) 块。
有什么想法吗?
【问题讨论】:
标签: nhibernate activerecord flush