Ho questa interfaccia che restituisce il vuoto in alcune funzioni che vorrei prendere in giro e mi chiedo quale sia il modo corretto di farlo. A partire da ora ho il seguente:Qual è il modo giusto per prendere in giro le funzioni void in 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();
È il modo giusto di farlo? Penso che sembri strano dal momento che non gestisci le due funzioni allo stesso modo. Quello che mi piacerebbe scrivere è:
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();
Ma che non funziona nel braccio 4. Ho trovato alcuni blog che dice che si può utilizzare lambda (o delegato) come
Expect.Call(() => mockedInterface.FunctionReturningVoid(param3, param4)); // This doesn't work.
Ma che doesn Sembra che funzioni anche per me. Avere il Expect.Call
facilita l'identificazione delle funzioni mocked ed è per questo che lo voglio. L'errore di compilazione che ottengo è: "Impossibile convertire espressione lambda in tipo 'oggetto' perché non è un tipo delegato".
Quindi, come dovrebbe essere fatto?
UPDATE: Aggiunta di informazioni di errore compilate.
Puoi pubblicare IMyInterface troppo? –