Heim > Java > javaLernprogramm > Hauptteil

Wie kann man mit Mockito nur einen bestimmten Methodenaufruf in einer Superklasse verspotten?

Patricia Arquette
Freigeben: 2024-10-31 06:17:02
Original
954 Leute haben es durchsucht

How to Mock Only a Specific Method Call in a Superclass with Mockito?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Erklärung:

  1. Erstellen Sie eine Instanz des ChildService Klasse mit Mockitos spy()-Methode. Dadurch wird ein Spionageobjekt erstellt, das zum selektiven Verspotten von Methoden verwendet werden kann.
  2. Stub die Methode in der Superklasse, die du nicht verspotten möchtest. Dies geschieht mit Mockito.doNothing(). Im Beispiel ist die Methode „validate()“ in der Superklasse stubbed.
  3. Führen Sie die Aktion für das Spionageobjekt aus (in diesem Fall den Aufruf von „save()“).
  4. Überprüfen Sie, ob es sich um die spezifische Methode handelt Es wurde ein Aufruf für das Spionageobjekt durchgeführt (in diesem Fall wird „load()“ überprüft).

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!