With.Transaction использует свойство UnitOfWork.Current. UnitOfWork является статическим классом - вы не можете высмеивать его с помощью RhinoMocks.
UnitOfWork.Current является публичным статическим свойством, поэтому вы можете поменять его местами. К сожалению, сеттер является внутренним.
Я вижу 3 варианта для вас:
Измените источник Rhino.Commons, чтобы сделать установщик UnitOfWork.Current.
и установите его в своем модульном тесте.
Используйте отражение, чтобы установить UnitOfWork.Current для вашего поддельного устройства
работы.
Поскольку UnitOfWork.Current внутренне использует Local.Data для поиска текущего
транзакция, вы должны быть в состоянии
перейти:
Rhino.Commons.Local.Data [UnitOfWork.CurrentUnitOfWorkKey] = myFakeUnitOfWork;
Хорошей новостью является то, что UnitOfWork.Current является IUnitOfWork, а RhinoMocks может легко подделывать интерфейсы.
Я должен закончить, сказав, что я не очень знаком с Rhino.Commons, поэтому Айенде могла бы придумать правильный способ подделать UnitOfWork. Если это очень важно для вас, спросите об этом в дискуссионных группах Rhino.