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(...):
doReturn(...).when(...):
Pertimbangkan perkara berikut MyClass:
public class MyClass { protected String methodToBeTested() { return anotherMethodInClass(); } protected String anotherMethodInClass() { throw new NullPointerException(); } }
doReturn(...).bila(...):
@Spy private MyClass myClass; // Works as expected doReturn("test").when(myClass).anotherMethodInClass();
apabila(...).thenReturn(...):
// Throws a NullPointerException when(myClass.anotherMethodInClass()).thenReturn("test");
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!