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
Linda Hamiltonasal
2024-12-07 14:11:16396semak imbas

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");

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();

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!

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