Nur einen bestimmten Methodenaufruf in der Superklasse mit Mockito verspotten
Bei der Durchführung von Unit-Tests mit Mockito kann es notwendig sein, nur einen bestimmten Methodenaufruf zu verspotten Aufruf einer Methode innerhalb einer Oberklasse, während andere Aufrufe davon unberührt bleiben. Stellen Sie sich das folgende Szenario vor:
<code class="java">class BaseService { public void save() {...} } public Childservice extends BaseService { public void save(){ //some code super.save(); } }</code>
In diesem Beispiel möchten Sie nur den Aufruf von super.save() innerhalb der ChildService-Klasse simulieren und dabei das Verhalten des anderen Aufrufs der save()-Methode beibehalten.
Lösung mit Spionage und Stubbing
Refactoring kann zwar eine praktikable Lösung sein, ist aber nicht immer machbar. In solchen Fällen können Sie Spionage- und Stubbing-Techniken nutzen, um das gewünschte spöttische Verhalten zu erreichen:
<code class="java">@Test public void testSave() { ChildService classToTest = Mockito.spy(new ChildService()); // Prevent/stub logic in super.save() Mockito.doNothing().when((BaseService)classToTest).validate(); // When classToTest.save(); // Then verify(classToTest).load(); }</code>
Erklärung:
Durch den Einsatz von Spionage und Stubbing können Sie das gewünschte Mocking-Verhalten effektiv simulieren und so bestimmte Methodenaufrufe testen innerhalb von Superklassen unter Beibehaltung der ursprünglichen Funktionalität.
Das obige ist der detaillierte Inhalt vonWie kann man mit Mockito nur einen bestimmten Methodenaufruf in einer Superklasse verspotten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!