2009-02-25 10 views
0

Ich bin frustriert zu versuchen, eine einfache Sache zu tun - Ich möchte eine Methode auf ein Mock-Objekt aufrufen und überprüfen Sie nicht den Rückgabewert. Ich möchte nur überprüfen, dass es mit den richtigen Parametern aufgerufen wurde.Wie verifiziere ich einen Methodenaufruf und ignoriere den Rückgabewert in EasyMock?

Beispiel:

MyInterface mockObject = createMock(MyInterface.class); 
SomeObject param = new SomeObject(); 

/* the write object is not void and returns an instance of FooOjbect. 
* I want to ignore everything to do with FooObject - I do not care what 
* it is because I do not store its value. How do I do this? */ 
mockObject.write(param); 

replay(mockObject); 

someOtherObjectThatCallsAboveMockObject.process(mockObject); 

verify(mockObject); 

So gibt es irgendwelche EasyMock Experten da draußen? Ich bin nicht besorgt über das Design der zugrunde liegenden Methode, die ich rufe und nicht den Rückgabewert speichern, da die tatsächliche Implementierung stammt aus einer Netzwerkbibliothek von Drittanbietern (Apache Mina) und ich habe keine Kontrolle über die API.

EDIT: Fazit erreichte einige Zeit später

ich EasyMock abgeladen, weil es nicht leicht war, und ging für Mockito.

+1

Ich wechselte auch zu Mockito. Es ist viel einfacher und bequemer, denke ich. – guerda

Antwort

3

Statt

mockObject.write(param) 

Schreib

EasyMock.expect(mockObject.write(param)).andReturn(/* return value here */); 

Sie müssen noch einen Wert für den Code zurück, um korrekt zu sein, aber Sie können den Wert weiter im Test ignorieren.

+0

Können Sie ein Beispiel dafür angeben, wie ich den Wert später ignoriere? Ich habe die Dokumentation durchforstet und sehe keine guten Beispiele. – Elijah

+0

@Elijah Durch "Ignorieren des Wertes" bedeutet es, dass Ihre tatsächliche Klasse nicht von dem Wert abhängt, der sich daraus ergibt. Wenn Sie eine tatsächliche Klasse sind, die nicht auf diesen Rückgabewert reagiert, bedeutet dies, dass sie ignoriert wird. Sie müssen einen Rückgabewert angeben, Punkt. –

+0

... in Ihrem Test ignorieren - nie wieder referenzieren. Hast du ein Problem mit deinem echten Code? Verursacht andReturn (null) Probleme? Sie versuchen nur, den Rückgabewert so hoch zu setzen, dass der Code so läuft, wie Sie es wünschen. – Stephen