Rumah  >  Artikel  >  Java  >  Cara Mengejek Panggilan Kaedah daripada Superclass dengan Mockito: Panduan Praktikal

Cara Mengejek Panggilan Kaedah daripada Superclass dengan Mockito: Panduan Praktikal

Linda Hamilton
Linda Hamiltonasal
2024-11-01 04:42:02755semak imbas

How to Mock a Method Call from a Superclass with Mockito: A Practical Guide

Mengatasi Cabaran Mockito: Mengejek Panggilan Kaedah daripada Superclass

Mockito, rangka kerja mengejek Java, menyediakan alat yang berkuasa untuk mengasingkan panggilan kaedah semasa ujian. Walau bagaimanapun, senario tertentu memerlukan hanya mengejek panggilan tertentu, terutamanya apabila berurusan dengan warisan.

Pertimbangkan hierarki kelas berikut:

<code class="java">class BaseService {  
    public void save() {...}  
}

public Childservice extends BaseService {  
    public void save(){  
        //some code  
        super.save();
    }  
}   </code>

Matlamatnya adalah untuk mengejek hanya panggilan ke super.save( ) dalam kelas ChildService, meninggalkan penyeruan kaedah asal untuk panggilan pertama.

Satu pendekatan melibatkan secara strategik menggunakan kaedah pengintip() Mockito untuk mencipta olok-olok kelas ChildService. Dengan menepis kaedah validate() kelas BaseService, yang dipanggil dalam super.save(), kami menghalang panggilan kaedah yang tidak diingini dengan berkesan:

<code class="java">class BaseService {

    public void validate(){
        fail(" I must not be called");
    }

    public void save(){
        //Save method of super will still be called.
        validate();
    }
}

class ChildService extends BaseService{

    public void load(){}

    public void save(){
        super.save();
        load();
    }
}

@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>

Pendekatan ini mengasingkan panggilan ke super.save( dengan berkesan. ) sambil membenarkan permohonan kaedah asal untuk panggilan pertama. Ia memastikan bahawa ujian memberi tumpuan khusus pada kaedah yang diingini dalam penelitian.

Atas ialah kandungan terperinci Cara Mengejek Panggilan Kaedah daripada Superclass dengan Mockito: Panduan Praktikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn