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!