Moq Erwartet im IRepository Passing Expression

9

Ich verwende diesen Code, um das Verhalten einer Methode zu überprüfen, die ich gerade teste:

%Vor%

_repository ist definiert als:

%Vor%

Wenn mein Test ausgeführt wird, bekomme ich diese Ausnahme:

Ausdruck t = & gt; (t.STATUS_CD="A") wird nicht unterstützt.

Kann mir bitte jemand sagen, wie ich dieses Verhalten testen kann, wenn ich einen Ausdruck nicht in die Expect-Methode einbringen kann?

Danke !!

    
Steve Horn 13.11.2008, 21:34
quelle

5 Antworten

2

Dies ist ein bisschen eine schäbige Art und Weise. Ich mache einen .ToString () auf die Ausdrücke und vergleiche sie. Dies bedeutet, dass Sie das Lambda auf die gleiche Weise in der getesteten Klasse schreiben müssen. Wenn Sie wollten, könnten Sie an dieser Stelle ein Parsing durchführen

%Vor%     
mcintyre321 13.07.2009 17:11
quelle
1

Beim Durchsuchen der Moq-Diskussionsliste habe ich die Antwort gefunden:

Moq-Diskussion

>

Es scheint, dass ich auf eine Einschränkung des Moq-Frameworks gestoßen bin.

Bearbeiten, ich habe einen anderen Weg gefunden, den Ausdruck zu testen:

Ссылка

    
Steve Horn 14.11.2008 13:48
quelle
0

In Rhino Mocks würden Sie so etwas tun ...

Anstatt Expect zu verwenden, verwenden Sie einen Stub und Ignorieren Sie die Argumente. Dann habe -

%Vor%

Rufen Sie Real Code

auf

* Richten Sie ein falsches JSOFile-Objekt mit STATUS_CD auf "A" *

ein %Vor%     
Kris 13.11.2008 22:04
quelle
0

Versuchen Sie das

%Vor%

Eine einfache Möglichkeit, nach Fehlern zu suchen, besteht darin, sicherzustellen, dass Sie am Ende eines Expect-Anrufs immer drei '' s haben.

    
flukus 13.11.2008 22:53
quelle
0

Wenn Sie testen möchten, ob der richtige Parameter übergeben wurde, könnten Sie die Rückgabeanweisung immer "missbrauchen":

  

bool correctParamers = true;

     

_repository.Expect (f = & gt; f.FindAll (It.IsAny & gt; ()))

     

.Returns ((Func func) = & gt; {correctParamers = func (fakeJSOFile); gibt eine neue List-JSOFile- ();})

zurück      

.AtMostOnce ()

     

.Verifizierbar ();

     

Assert.IsTrue (correctParamters);

Dies ruft die Funktion auf, die mit den gewünschten Argumenten übergeben wurde.

    
flukus 14.11.2008 05:08
quelle

Tags und Links