Posts
163
Comments
179
Trackbacks
5
RhinoMocks: PartialMock e metodi virtuali

Oggi durante la scrittura di alcuni Unit Test mi sono imbattuto in un errore banale, ma che mi ha fatto perdere un po’ di tempo.
Sostanzialmente creando un mock parziale con Rhino Mocks mi saltava fuori sempre la seguente eccezione:

Invalid call, the last call has been used or no call has been made (make sure that you are calling a virtual (C#) / Overridable (VB) method).

La creazione del mock parziale è qualcosa del tipo (Visual Basic… si lo so…):

   1: Dim service As IMyService = MockRepository.GeneratePartialMock(Of MyService)()
   2: service.Expect(Function(e) e.MyFunction()).Return(True).Repeat.Once()

Come dice l’errore stesso, il tutto accade se la funzione MyFunction non viene dichiarata come Virtuale (Overridable in Visual Basic).
Le limitazioni di Rhino Mocks (prese da questo link) sono le seguenti:

- You cannot create a mock object from a sealed class.
- You cannot create a mock object from a private interface.
- You cannot intercept calls to non-virtual methods.

posted on mercoledì 14 novembre 2012 18:23 Print
Comments
Gravatar
# re: RhinoMocks: PartialMock e metodi virtuali
Massimo
15/11/2012 16:00
Ciao Alessandro, qualche tempo fà ho scuriosato un pò, tra i sorgenti di RhinoMocks e di DynamicProxy, che se non sbaglio è la libreria,
anch'essa open source, sulla quale si basa Ayende per implementare il suo Framework.
Questa si basa sul concetto del pattern Proxy
dei Gof.
Se ti ci ridai una spolverata il motivo della terza limitazione sarà scontato.
Un saluto.
Massimo
Comments have been closed on this topic.
News
Se volete sapere con chi avete a che fare eccomi qui in uno "scatto" lavorativo.

La mia foto

Logo MCAD
Logo MCTS