尝试单元测试时,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?
我被困,有什么想法吗?
谢谢! 添
答案 0 :(得分:1)
您是否尝试过以下操作?您的数据访问方法返回IQueryable,但是您尝试模拟在结果上调用ToList()时返回的内容?你应该嘲笑结果。
Repository.Stub(x => x.All<Employee>()).Return(employeeList.AsQueryable<Employee>);