У меня есть этот интерфейс, который возвращает void в некоторых функциях, которые я хотел бы высмеять и задаться вопросом, что является правильным способом. На данный момент у меня есть следующее:Каков правильный способ фальсификации функций в RhinoMocks?
var mocks = new MockRepository();
var mockedInterface = mocks.CreateMock<IMyInterface>();
Expect.Call(mockedInterface.FunctionThatReturn(param1, param2)).Return(Something);
mockedInterface.FunctionReturningVoid(param3, param4);
mocks.ReplayAll();
// Some assert and other stuff
mocks.VerifyAll();
Это правильный способ сделать это? Я думаю, это выглядит странно, так как вы не обрабатываете две функции одинаково. То, что я хотел бы написать это:
var mocks = new MockRepository();
var mockedInterface = mocks.CreateMock<IMyInterface>();
Expect.Call(mockedInterface.FunctionThatReturn(param1, param2)).Return(Something);
Expect.Call(mockedInterface.FunctionReturningVoid(param3, param4)); // This doesn't work.
mocks.ReplayAll();
// Some assert and other stuff
mocks.VerifyAll();
Но это не работает в строке 4. Я нашел блог, который говорит, что вы можете использовать лямбды (или делегат), как
Expect.Call(() => mockedInterface.FunctionReturningVoid(param3, param4)); // This doesn't work.
Но что Безразлично Кажется, я тоже работаю. Наличие Expect.Call
позволяет легко идентифицировать насмешливые функции, и именно поэтому я хочу его. Ошибка компиляции, которую я получаю: «Невозможно преобразовать лямбда-выражение в тип« объект », потому что это не тип делегата».
Итак, как это сделать?
UPDATE: Добавлена информация об ошибке компиляции.
Можете ли вы пост IMyInterface тоже? –