Betrachten Sie das folgende Beispiel MockUp
einer Klasse Foo
, die Bar
im Konstruktor abfängt und dann implementiert toString()
in Bezug auf Bar
;Kann JMockit MockUp mock toString()?
public class FooStub extends MockUp<Foo> {
private Bar bar;
@Mock
public void $init(Bar bar) {
this.bar = bar;
}
@Mock
public String toString() {
return bar.toString();
}
}
Wenn Foo
geschieht toString()
alles funktioniert gut außer Kraft zu setzen. Andernfalls erhalten Sie eine IllegalArgumentException
: "Passende reale Methoden nicht für die folgenden Mocks gefunden". Ich verstehe von hier aus, dass JMockit nicht in Basisklassen sucht und daher keine toString()
Methode zum Mock finden kann.
Angenommen, ich kann die Foo-Klasse nicht ändern (in Wirklichkeit kann ich, aber nur aus Gründen der Argumentation), gibt es eine Möglichkeit toString()
nur für diese Foo
Klasse zu verspotten?
Um klar zu sein, möchte ich alle Instanzen dieser Klasse zu verspotten, nicht nur eine Instanz (die einfache Lösungen, die keine MockUp
erfordern).
Mögliches Duplikat von [Jmockit: Methode zu String der Klasse net.android.Uri kann nicht verspottet werden] (https://stackoverflow.com/questions/41561351/jmockit-cant-mock-method-tostring-of-net- Android-Uri-Klasse) – Jotunacorn