Я пытался использовать Rhino Mocks с кодом F #, и следующий код был проблематичным:
let service = MockRepository.GenerateMock<IMyService>()
service.Stub(s => s.Name).Return("Service");
Это не было неожиданностью, поскольку Stub не является частью интерфейса IMyService, это метод расширения C #, который определяет Rhino Mocks.
Слегка измененный код работает:
let service = MockRepository.GenerateMock<IMyService>()
RhinoMocksExtensions.Stub<IMyService, string>(service, fun s -> s.Name).Return("Service");
Однако было бы неплохо определить метод расширения в F #, но тогда это будет параметризованный универсальный метод расширения, который будет принимать кортеж. Я пробовал синтаксис varios, но безуспешно. Я не нашел информации, поддерживается ли это в настоящее время в F # или нет. Если кто-нибудь знает, пожалуйста, дайте мне знать.