2016-07-13 23 views
0

WhenCalled ist überall gut dokumentiert & Ich gehe nicht in, warum ich es benutze, aber ich kann es einfach nicht zum Arbeiten bekommen so wie es praktisch in jedem Beitrag beschrieben wird, den ich zu diesem Thema gesehen habe.Rhino Mocks WhenCalled - Delegierte 'System.Action' benötigt keine Argumente

Grundsätzlich sollten Sie in der Lage sein, etwas zu tun:

mock.Expect(x => x. SingleOrDefault(null)) 
    .IgnoreArguments() 
    .WhenCalled(invocation => ((Action)invocation.Arguments[0]).Invoke()); 

Aber das ist für mich nicht kompilieren - bekomme ich nur eine Fehlermeldung, Delegierter ‚System.Action‘ findet nicht 1 Argumente.

Ich benutze V 4.0 von Rhino Mocks - hat diese Methode geändert? Ich möchte WhenCalled verwenden, um die an SingleOrDefault übergebenen Argumente zu erfassen (in diesem Fall ein Lambda-Ausdruck).

Antwort

1

Alle beantwortet in diesem Blog-Eintrag:

Rhino Mocks 4.0.0

Bisher erlaubt WhenCalled Sie eine Aktion auszuführen, die stattfand, als ein einziger Parameter, eine Datenstruktur, die Methodenaufruf kapseln. Da eine Aktion aufgerufen wurde, konnte der Rückgabewert der Erwartung nicht geändert werden. In der aktuellen Version wurde WhenCalled leicht modifiziert, um einfach eine Aktion auszuführen

Um eine ähnliche Funktion wie das Original "WhenCalled" zu bieten, wurde eine neue Methode "Intercept" hinzugefügt, die eine Aktion erwartet, die als einziger Parameter Einkapseln eine Datenstruktur des Verfahren, Invokation

tl; dr: Verwendung Intercept anstelle von WhenCalled