【发布时间】:2010-07-19 01:01:27
【问题描述】:
以下是针对 FluentNHibernate-1.1.0.685 (NHibernate-2.1.2.4000) 的存储库的简单测试。 Session 和 NH 配置由测试夹具提供。
[测试] public void ShouldEdit() { var 员工 = CreateEmployee(); 会话.清除(); var changedEmployee = _testRepository(employee.id); changedEmployee.FirstName = "林戈"; _testRepository.SaveOrUpdate(changedEmployee); session.Flush(); 会话.清除(); // 拉这个调用将允许测试通过。 var employees = (IList)_testRepository.GetAll(); Assert.Contains(changedEmployee, employees); Assert.IsFalse(employees.Contains(employee)); } 员工 CreateEmployee() { var e = {Id = 1, FirstName = "George", LastName = "Washington" }; _testRepository.SaveOrUpdate(e); session.Flush(); 返回 e; }如果我摆脱对 Clear() 的第二次调用,该测试将通过。但是,如果我留下电话,那么测试将失败并显示以下内容:
失败的: 预期:包含不是很有帮助。撇开这些不谈,为什么我需要删除对 Clear() 的第二次调用?
Flush() 将与数据库同步,如果我正确理解 documentation,Clear() 将驱逐会话缓存。这似乎正是我想要的行为,因此我可以确定我没有针对过时的数据进行测试。事实上,我希望测试失败没有调用 Clear(),但事实并非如此。有人可以解释一下这种行为吗?
(注意:这是在 PragProg 书籍“Test Drive ASP.Net MVC”的第 10 章中找到的存储库测试的变体。顺便说一句,好书。)
【问题讨论】:
标签: c# unit-testing nhibernate testing fluent-nhibernate