Rumah > Java > javaTutorial > Mockito: `doReturn()` lwn. `when()`: Bilakah Anda Harus Menggunakan Yang Mana dengan Objek Spied?

Mockito: `doReturn()` lwn. `when()`: Bilakah Anda Harus Menggunakan Yang Mana dengan Objek Spied?

Patricia Arquette
Lepaskan: 2024-11-28 18:19:15
asal
1040 orang telah melayarinya

Mockito: `doReturn()` vs. `when()`: When Should You Use Which with Spied Objects?

Mockito: Memahami Perbezaan Halus antara doReturn() dan when()

Apabila menggunakan rangka kerja mengejek Mockito untuk meningkatkan keupayaan ujian, pembangun sering menghadapi doReturn() dan kaedah bila(). Walaupun kedua-dua kaedah berfungsi untuk tujuan penyeruan kaedah stubbing, perbezaan yang ketara terletak di antara mereka apabila bekerja dengan objek intipan (diberi anotasi dengan @Spy).

apabila(...).thenReturn(...) vs doReturn(...).apabila(...)

apabila(...).thenReturn(...):

  • Membuat panggilan kaedah sebenar sebelum mengembalikan nilai yang ditentukan.
  • Jika kaedah yang dipanggil melemparkan pengecualian, ia mesti dikendalikan atau diejek secara berasingan.

doReturn(...).when(...):

  • Elakkan panggilan kaedah sebenar sepenuhnya.

Contoh Praktikal

Pertimbangkan perkara berikut MyClass:

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

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

Menguji dengan Perisik

doReturn(...).bila(...):

@Spy
private MyClass myClass;

// Works as expected
doReturn("test").when(myClass).anotherMethodInClass();
Salin selepas log masuk

apabila(...).thenReturn(...):

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

Dalam ini senario, doReturn() memastikan pengecualian dalam anotherMethodInClass() dielakkan semasa masih mengembalikan nilai yang diingini. Sebaliknya, when() mencetuskan panggilan kaedah sebenar, mengakibatkan NullPointerException dilemparkan.

Oleh itu, apabila bekerja dengan objek intipan, pilihan antara doReturn() dan when() bergantung pada sama ada anda mahu menggunakan kaedah sebenar atau memintas sama sekali.

Atas ialah kandungan terperinci Mockito: `doReturn()` lwn. `when()`: Bilakah Anda Harus Menggunakan Yang Mana dengan Objek Spied?. 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