Я пытаюсь смоделировать некоторый код, который вызывает метод расширения.Это устаревший код, который написан не для тестирования, но мне было поручено создать для него модульные тесты без необходимости изменения кода, поскольку время / политика / и т. Д. Теперь это позволяет.
В любом случае, код, который я пытаюсь смоделировать, находится в нашей структуре доступа к данным приложений.Мы используем (очень старую) версию NHibernate (следовательно, устаревшую).У нас есть метод, который использует nHibernate для возврата интерфейса IQueryable, который мы можем запросить.Это выглядит так:
public static IQueryable<TEntity> Linq()
{
ISession session = GetCurrentUnitOfWork();
return session.Query<TEntity>();
}
Я могу успешно настроить метод GetCurrentUnitOfWork, чтобы он возвращал ложную сессию IS, которая вместо перехода в БД возвращает списки объектов.
Проблема в том, что метод Query не определен в ISession.Это метод расширения ISession.Так как код инфраструктуры скомпилирован для вызова метода расширения Query (), даже если я определю точно такой же метод в моей смоделированной сессии, метод расширения по-прежнему вызывается.
Итак, есть ли у кого-нибудь идеи о том, как я могу настроить этот код для вызова смоделированной версии метода Query ()?
Заранее спасибо.