为什么调用Session.Clear()导致此测试失败?
以下是针对FluentNHibernate-1.1.0.685(NHibernate-2.1.2.4000)的存储库的简单测试。 Session和NH配置由测试夹具提供。
[测试] public void ShouldEdit(){
var employee = CreateEmployee();
session.Clear();
var changedEmployee = _testRepository(employee.id);
changedEmployee.FirstName =“Ringo”;
_testRepository.SaveOrUpdate(changedEmployee);
调用Session.flush();
session.Clear(); //拉这个电话会让考试通过。
var employees =(IList)_testRepository.GetAll();
Assert.Contains(changedEmployee,employees);
Assert.IsFalse(employees.Contains(雇员));
}
员工CreateEmployee(){
var e = {Id = 1,FirstName =“George”,LastName =“Washington”};
_testRepository.SaveOrUpdate(E);
调用Session.flush();
返回e;
}
如果我摆脱对Clear()的第二次调用,这个测试将通过。如果我离开了电话,那么测试将失败并显示以下内容:
失败:
预期:包含< Employee>的集合
但是:< <员工> >
不是很有帮助。暂且不说,为什么我需要删除对Clear()的第二次调用?
Flush()将与db同步,如果我正确理解文档,Clear()将逐出缓存。这似乎正是我想要的行为,所以我可以肯定我没有测试陈旧的数据。事实上,如果没有调用Clear(),我会期望测试失败,但事实并非如此。有人可以对这种行为有所了解吗?
(注意:这是对PragProg书籍“Test Drive ASP.Net MVC”第10章中的存储库测试的变体。好书顺便说一下。)
没有找到相关结果
已邀请:
1 个回复
宦哨抹存胳