Прежде всего, я бы советовал вообще не подделывать интерфейсы NHibernate, это (на мой взгляд) слишком низкий уровень для модульного тестирования.Вероятно, лучше иметь несколько интеграционных тестов для этих сценариев.Другими словами, юнит тестирует все взаимодействия с абстракцией для ProductionRepository (IProductionRepository), но на этом останавливается.Теперь, однако, это только мое мнение, и если вы действительно хотите сделать это, я думаю, вам придется изменить вашу фальшивую настройку:
Сессия возвращает критерии, а не IList напрямую.Поэтому у вас тоже должны быть поддельные критерии:
var fakeCriteria = A.Fake<ICriteria>();
A.CallTo(fakeCriteria).WithReturnType<IList<Tank>>().Returns(new List<Tank> { tank });
A.CallTo(session).WithReturnType<ICriteria>().Returns(fakeCriteria);
(надеюсь, я правильно помню тип критерия, думаю, это ICriteria, но я не уверен на сто процентов.)