Rumah > Java > javaTutorial > Mockito Mocking: When() vs. doReturn() – Bilakah Saya Harus Gunakan Yang Mana?

Mockito Mocking: When() vs. doReturn() – Bilakah Saya Harus Gunakan Yang Mana?

Linda Hamilton
Lepaskan: 2024-12-07 14:11:16
asal
360 orang telah melayarinya

Mockito Mocking: When() vs. doReturn() – When Should I Use Which?

Menggunakan Mockito: DoReturn() vs. When()

Di alam Mockito, dua kaedah muncul dengan persamaan yang jelas: doReturn( ) dan bila(). Kedua-duanya memudahkan fungsi mengejek objek, mendorong pertanyaan: mengapa perlunya dua kaedah analog sedemikian?

Jawapannya terletak pada tingkah laku mereka apabila digunakan dengan objek intipan (beranotasi dengan @Spy) berbanding objek ejek (beranotasi dengan @Mock ). Tidak seperti objek yang dipermainkan, objek intipan mengekalkan pelaksanaan kaedah sebenar kelas yang dilanjutkan.

When() thenReturn() memanggil kaedah asal sebelum menggantikan nilai pulangan yang ditentukan. Akibatnya, pengecualian yang dilemparkan oleh kaedah mesti dikendalikan dalam ujian. Contohnya:

@Spy
private MyClass myClass;

// Continues executing the actual method, potentially throwing an exception
when(myClass.anotherMethodInClass()).thenReturn("test");
Salin selepas log masuk

DoReturn() when(), sebaliknya, memintas panggilan kaedah sama sekali. Ini menghalang kaedah asal daripada melaksanakan dan menghapuskan risiko pengecualian:

// Bypasses the actual method call, returning the specified value
doReturn("test").when(myClass).anotherMethodInClass();
Salin selepas log masuk

Memahami perbezaan ini adalah penting apabila bekerja dengan objek intipan. Dalam situasi di mana kaedah intipan mungkin mencetuskan ralat, doReturn() menawarkan alternatif yang selamat kepada when(), memastikan pengalaman ujian yang lancar.

Atas ialah kandungan terperinci Mockito Mocking: When() vs. doReturn() – Bilakah Saya Harus Gunakan Yang Mana?. 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