2014-08-11 4 views
19

Ich kann nicht herausfinden, warum die doNothing funktioniert nicht dafür? Irgendwelche Ideen?Mockito Problem - wenn (java.lang.Void) in Stubber kann nicht auf void

@Captor 
ArgumentCaptor<GenericClass<someOtherClass>> captor; 
... 
Mockito.doNothing().when(mockObject.methodToStub(captor.capture())); 

Der Fehler ist:

Exception: when(java.lang.Void) in Stubber cannot be applied to void

Antwort

4

Obwohl Sie fragen, warum DoNothing nicht funktioniert, bekomme ich, dass Sie tatsächlich das Argument für methodToStub erfassen möchten.

Der einfachste Weg, dies würde zu tun:

verify(mockObject).methodToStub(captor.capture()); 

Wenn Sie Sie wollen einfach nur spotten gar nichts auf einem Leeren Methodenaufruf zu tun, remeber, dass nichts zu tun, ist der Standard für nichtig Methoden auf Mocks.

Wenn Sie aus irgendeinem Grund immer noch doNothing anrufen müssen, sollten Sie auf die Klammerposition achten. Es sollte wie folgt aussehen:

doNothing().when(mockObject).methodToStub(any()); 

oder DoNothing(), wenn (MockObject) .methodToStub (captor.capture());.

+0

Dank für das. Ich möchte eigentlich nichts passieren, wenn methodToStub aufgerufen wird. Ich habe (vielleicht fälschlicherweise) verstanden, dass der ArgumentCaptor wegen der Verwendung von Generics in der Methode, die stubbed ist, benötigt wurde. – mstrom

+0

Lassen Sie mich sicherstellen, dass ich verstehe: Sie wollen einfach nichts passieren, wenn der methodToStub aufgerufen wird? Und MockObject ist ein Mock-Objekt, das mit Mock (YourClass.class) erstellt wird? –

+0

Ja, das stimmt! – mstrom

35

Dieser Stummel ist falsch:

doNothing().when(mockObject.methodToStub(captor.capture())); // wrong 

methodToStub(...) außerhalb der when sein muss, wenn dieser API Stil mit (es nur den Schein enthalten soll):

doNothing().when(mockObject).methodToStub(captor.capture()); // correct 

Tho Bemerkungen jedoch:

  1. doNothing ist der Standardwert für void-Methoden für einen Schein.
  2. können Sie die BDDMockito Aliase verwenden, die Ihren Code ermöglicht die Antwort auf die real sein à la Verhalten Driven Development
Verwandte Themen