2016-04-20 4 views
0

Brauchen Sie Hilfe bei dieser Frage.Wie bekomme ich einen Wert von einer void-Methode mit Mockito - Groovy/java

Ich habe eine Void-Methode wie diese

public void doSomething(String a, String b){ 
    ServiceUtils utils = new ServiceUtils(persistService, randomService) 

    String c; 
    String d; 
    c = utils.someMethod(a, b); 
    d = service.anotherMethod(b, null); 
    if(utils.validateSomething(d)){ 
    //... 
    } 



    persistService.persistMethod(c , d); 

    } 

ich den Wert innen C nehmen muß mit meinem groovy Test zu bewegen.

Kann nicht die UTILs verspotten, es ist wichtig für die Validierung. Kann nicht spotten/(spy (?)) PersistService, weil im utils-Konstruktor verwendet wird.

Wie könnte ich das mit Mockito tun?

Antwort

0

könnten Sie verwenden BDDMockito.verify() und ArgumentCaptor dafür, wie folgt aus:

ArgumentCaptor<String> capture = ArgumentCaptor.forClass(String.class); 
BDDMockito.verify(persistService).persistMethod(captor.capture(), any()); 

und der Wert erhalten mit:

captor.getValue()

Dies setzt voraus, dass persistService mit Mockito verspottet .

+0

Funktioniert nicht. persistService sollte in diesem Fall eine Spy-Methode sein, weil sie für andere Aufgaben im gesamten Test verwendet wird ... und ich kann den Spion nicht benutzen. –

+0

Es ist ein Integrationstest? Sie müssten mehr zeigen, wie es zum Test und zum Testaufbau kommt. – gmaslowski

+0

Bearbeitet. Entschuldigung für den Mangel an Informationen. Jetzt behoben. –

3

Das Problem ist die ‚neue‘ in Ihrer Methode:

ServiceUtils utils = new ServiceUtils(persistService, randomService) 

versuchen, Ihren Code Refactoring: Wenn Sie den ‚ServiceUtils‘ Klasse im Konstruktor injizieren, können Sie dies im Test verspotten .

+0

Cant. Es lohnt sich nicht, diese Methode nur für diesen Fall zu überarbeiten. –

+0

@MatheusCiaramella Wenn Sie nichts spotten können, warum möchten Sie ein spöttisches Framework verwenden, um dieses Problem zu lösen? – Lunivore

+1

Ich denke, es ist immer eine Refaktorierung wert, wenn man es nicht testen kann! –

Verwandte Themen