Запрашиваемое модульное тестирование NHibernate - PullRequest
2 голосов
/ 03 февраля 2012

Попытка юнит-тестирования 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);

По сути, все, что возвращает> 1 сотрудника, я не могу смутно себя вести.

Репозиторий Метод FindById возвращает:

Session.Get<TEntity>(id);

Репозиторий All метод возвращает:

Session.Query<TEntity>();

Когда модульный тест запускает макет репозитория All, метод возвращает исключение, говоря, что источник не может быть нулевым?

Я застрял, есть идеи?

Спасибо!Тим

1 Ответ

1 голос
/ 03 февраля 2012

Вы пробовали следующее.Ваш метод доступа к данным возвращает IQueryable, но вы пытаетесь смоделировать то, что возвращается, когда вы вызываете ToList () для результата?Надо просто посмеяться над результатом.

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