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

Cara Mengejek Panggilan Kaedah daripada Superclass dengan Mockito: Panduan Praktikal

Linda Hamilton
Lepaskan: 2024-11-01 04:42:02
asal
842 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan