Rumah > Java > javaTutorial > Mockito's doReturn() vs. when(): Apakah Perbezaan Apabila Menggunakan Spied Objects?

Mockito's doReturn() vs. when(): Apakah Perbezaan Apabila Menggunakan Spied Objects?

Barbara Streisand
Lepaskan: 2024-12-16 17:28:10
asal
543 orang telah melayarinya

Mockito's doReturn() vs. when(): What's the Difference When Using Spied Objects?

Memahami Perbezaan antara Mockito's doReturn() dan when()

Semasa membangunkan aplikasi Spring MVC, penggunaan Mockito untuk mengejek lapisan perkhidmatan objek adalah amalan biasa. Semasa menerokai keupayaan Mockito, menjadi jelas bahawa kedua-dua doReturn(...).when(...) dan when(...).thenReturn(...) kelihatan melakukan fungsi yang sama. Ini menimbulkan persoalan: adakah terdapat perbezaan antara kedua-dua kaedah ini?

Perbezaan utama antara doReturn() dan when() menjadi jelas apabila menggunakan objek intipan (beranotasi dengan @Spy) dan bukannya ejekan (beranotasi dengan @ Olok-olok).

doReturn() lwn. when() dengan Spied Objek

  • doReturn(...).when(...): Membolehkan anda mengubah suai nilai pulangan sesuatu kaedah tanpa benar-benar menggunakan kaedah tersebut.
  • apabila(...).thenReturn(...): Mendapat pelaksanaan kaedah sebenar sebelum mengembalikan nilai yang ditentukan.

Contoh

Pertimbangkan kod berikut:

public class MyClass {
    protected String methodToBeTested() {
        return anotherMethodInClass();
    }

    protected String anotherMethodInClass() {
        throw new NullPointerException();
    }
}
Salin selepas log masuk

Kes Ujian:

@Spy
private MyClass myClass;

// Works fine, does not invoke anotherMethodInClass()
doReturn("test").when(myClass).anotherMethodInClass();

// Throws NullPointerException because anotherMethodInClass() is invoked
when(myClass.anotherMethodInClass()).thenReturn("test");
Salin selepas log masuk

Ringkasnya, apabila menggunakan objek intipan, doReturn() membenarkan anda untuk langkau pelaksanaan kaedah dan tetapkan nilai pulangan secara langsung, manakala apabila() memanggil kaedah sebenar sebelum mengembalikan nilai yang dikehendaki. Pemahaman ini amat penting apabila bekerja dengan objek intipan dalam Mockito.

Atas ialah kandungan terperinci Mockito's doReturn() vs. when(): Apakah Perbezaan Apabila Menggunakan Spied Objects?. 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