2016-08-08 32 views
3

Ich habe versucht, mit Mockito und PowerMockito meinen Code zu testen. Ich habe so etwas wie die folgende Klasse:Verwenden von Mockito: Übereinstimmen mehrerer Argumente in einer privaten statischen Methode?

public class asdfClass{ 

    public static String methodToMock(String item, String otheritem){ 
     return "asdf"; 
    } 

    public static String methodToMock(String item){ 
     return "asdf";  
    } 
} 

Aus welchem ​​Grund auch immer, obwohl, läuft der folgende:

PowerMockito.spy(asdfClass.class); 

PowerMockito.when(asdfClass.methodToMock(Mockito.any())).thenReturn("asdfghj"); 

richtig zu kompilieren scheint aber läuft

PowerMockito.spy(asdfClass.class); 

PowerMockito.when(asdfClass.methodToMock(Mockito.any(), Mockito.any())).thenReturn("asdfghj"); 

nicht und Spießen aus einem "'void' Typ nicht erlaubt hier" Fehler auf der Mockito.any() s.

Weiß jemand, was man dagegen tun kann? Das einzige andere Ergebnis, das ich bei stackoverflow gesehen habe, legt nahe, dass der Leser sich die Dokumentation ansieht, obwohl ich nicht glaube, dass es über mehrere Argumente in einer privaten statischen Methode aussagt.

(Am Ende ich bin die Hoffnung, ein ungültiges Ergebnis mit einem DoNothing zu verspotten, obwohl ich das Problem gekocht habe mich mit auf die Tatsache, dass alle meine Leeren Methoden mehrere Argumente)

EDIT : Macht nichts, habe es: Is it possible to use partial mocking for private static methods in PowerMock? (Kommentar 4 zur gewählten Antwort). Seltsamerweise funktionierte das nicht vorher, aber das war vielleicht ein Tippfehler meinerseits für alles, was ich weiß)

Antwort

1

Sie mock void Methoden, so kann es nichts zurückgeben, so sollte die thenReturn() Anweisung weggelassen werden (zum Beispiel anstelle von when() verwenden Sie doNothing()).

+0

Oops; scheint, dass ich meinen Code gehetzt habe, als ich diese Frage gestellt habe; Bearbeiten – user3537932

+0

Bearbeitet; Das tut mir leid – user3537932