Как правильно имитировать void-функции в RhinoMocks?

У меня есть интерфейс, который возвращает void в некоторых функциях, над которыми я хотел бы высмеять и поинтересоваться, как это правильно сделать. На данный момент у меня есть следующее:

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 позволяет легко идентифицировать фиктивные функции, и именно поэтому мне это нужно. Я получаю следующую ошибку компиляции: «Невозможно преобразовать лямбда-выражение в тип« объект », потому что это не тип делегата».

Итак, как это сделать?

ОБНОВЛЕНИЕ: Добавлена ​​информация об ошибке компиляции.

7
задан Tomas Jansson 21 January 2011 в 11:49
поделиться