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.