2009-08-03 2 views
0

ich Moq für Unit-Tests bin mit, und ich habe eine Erwartung wie folgt aufgebaut:Moq wandelt It.IsAny <Exception> zu It.IsAny <string> in Erwartung

myMock.Expect(w => w.MyMethod(It.IsAny<string>(), 
           It.IsAny<string>(), 
           It.IsAny<string>(), 
           It.IsAny<System.Exception>(), null)) 
     .Returns(myResult); 

das Verfahren es spöttisch ist:

logger.WriteLogItem(string1, string2, string3, System.Exception, IEnumerableInstantiation); 

Dies baut und läuft gut, aber VerifyAll() nicht passieren, und die Fehler, die ich bekommen ist:

Moq.MockVerificationException : The following expectations were not met: 
IMyClass l => l.MyMethod(It.IsAny<string>(), It.IsAny<string>(), 
         It.IsAny<string>(), It.IsAny<String>(), null) 

So ändert sich die Exception in eine Zeichenkette aus irgendeinem Grund ....

Hat jemand das schon mal gesehen/habe eine Ahnung warum es das macht und was ich tun kann um es zu reparieren/zu umgehen?

danke!

Antwort

0

Okay, also habe ich eine Testmethode erstellt, die eine Ausnahme als Parameter hatte und diese mit moq auf die obige Weise aufgerufen hat, und es hat gut funktioniert. Es scheint also kein Problem zu sein, eine Exception als Parameter an sich zu übergeben.

Ich habe auch den ersten Parameter von einem Enum-Wert in eine It.IsAny enum geändert. Also von

myMock.Expect(w => 
    w.MyMethod(**MyEnum.Value**, 
     It.IsAny<string>(), 
     It.IsAny<string>(), 
     It.IsAny<System.Exception>(), 
     null)) 
.Returns(myResult); 

zu

myMock.Expect(w => 
    w.MyMethod(**It.IsAny<MyEnum>()**,   
     It.IsAny<string>(), 
     It.IsAny<string>(), 
     It.IsAny<System.Exception>(), 
     null)) 
.Returns(myResult); 

und der Ausgang ich erhielt, war:

IMyClass l => 
    l.MyMethod(IsAny<MyEnum>(), 
     IsAny<MyEnum>(), 
     IsAny<MyEnum>(), 
     IsAny<MyEnum>(), 
     null) 

So sieht es aus wie es die Art des ersten Parameters zu nehmen und es zu allen übrigen Anwendung aus irgendeinem Grund .....

2

Ah, es war ein Anfängerfehler! Und die Conversion-Sache war nur ein Red-Hering, der mich dazu bringen sollte, im Internet nach verrückten Antworten zu suchen, die nicht da draußen sind.

Ich übergab das myMock.Object nicht an den aufrufenden Befehl!