У меня есть этот интерфейс, который возвращает 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
позволяет легко идентифицировать фиктивные функции, и поэтому я хочу его.Я получаю ошибку компиляции: «Невозможно преобразовать лямбда-выражение в тип« объект », потому что это не тип делегата».
Так как это сделать?
ОБНОВЛЕНИЕ: Добавлена информация об ошибке компиляции.