Mit Mockito zu verspotten Methode einer Klasse innerhalb einer anderen Klasse
Ich bin versucht, zu schreiben unit-tests mit Mockito /JUnit für eine Funktion wie diese:
class1 {
method {
object1 = class2.method //method that I want to fake the return value
//some code that I still want to run
}
}
Gibt es eine Möglichkeit, in Mockito stub das Ergebnis class2.Methode? Ich versuche zur Verbesserung der code-Abdeckung für class1, so muss ich rufen seine wirkliche Produktion Methoden.
Schaute ich in das Mockito-API auf seine spy-Methode, aber das würde die ganze Methode überschreiben und nicht der Teil, den ich will.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, ich verstehe Ihre Frage. Lass mich re-Satz, Sie haben eine Funktion, die Sie versuchen, zu testen und zu wollen, zu verspotten, die Ergebnisse einer Funktion, die aufgerufen wird innerhalb dieser Funktion, aber in einer anderen Klasse. Ich behandelt haben, die in der folgenden Weise.
Was dieser tut, ist, dass innerhalb der Funktion zusammen mit der @Before-annotation, ich bin einrichten, wie ich will, die Funktionen in class2 zu reagieren, bestimmte Eingänge. Dann, aus dem eigentlichen test, ich bin nur dem Aufruf der Funktion, die ich versuche zu testen, die in der Klasse die ich testen will. In diesem Fall, die myClass.functionCall() ausgeführt wird durch als normal, und Sie werden nicht überschreiben alle Ihre Methoden, aber Sie sind nur spöttisch die Ausgaben, es wird von der Methoden (oder eine Methode) innerhalb MyClass2.
myClass
ist nie deklariert oder initialisiert, und class2 ist nie übergeben. 2) Die annotation-Klasse@Begin
existiert nicht - es sollte@Before
oder vielleicht@BeforeClass
3) Das Mitglied class2 sollte wohl nicht statisch sein - vor allem, wenn@Before
verwendet wird. Es sollte neu angelegt werden für jeden test. 4) Besser zu stub-class2 in dem test, selbst wenn nicht für alle tests.Dieser Arbeitete für Mich: