NHibernate可查询单元测试

时间:2012-02-02 22:33:11

标签: c# .net unit-testing nhibernate unit-of-work

尝试单元测试时,NHibernate和工作单元模式在尝试模拟返回IQueryable的数据访问方法时遇到了障碍?

这有效:

var employee = Helper.GetEmployee();
Repository.Stub(x => x.FindById<Employee>(employee.Id)).Return(employee);

这不起作用:

var employee = Helper.GetEmployee();
var employeeList = new List<Employee> { employee };
Repository.Stub(x => x.All<Employee>().ToList()).Return(employeeList);

基本上,任何返回&gt; 1名员工我不能嘲笑表现。

Repository FindById方法返回:

Session.Get<TEntity>(id);

Repository All方法返回:

Session.Query<TEntity>();

当单元测试运行mocked repository All方法时,返回异常,说source不能为null?

我被困,有什么想法吗?

谢谢! 添

1 个答案:

答案 0 :(得分:1)

您是否尝试过以下操作?您的数据访问方法返回IQueryable,但是您尝试模拟在结果上调用ToList()时返回的内容?你应该嘲笑结果。

Repository.Stub(x => x.All<Employee>()).Return(employeeList.AsQueryable<Employee>);