Contoh ini menunjukkan cara menggunakan fungsi Mockito spy
untuk mengejek kaedah tertentu dalam kelas. Katakan kita mempunyai kelas yang dipanggil MyClass
:
public class MyClass { public int add(int a, int b) { return a + b + internalMethod(); } private int internalMethod() { return 5; // This is the method we want to isolate } public int anotherMethod() { return 10; } }
kita mahu menguji kaedah add
, tetapi kita tidak mahu hasilnya dipengaruhi oleh internalMethod
. Kita boleh menggunakan pengintip untuk mengejek hanya internalMethod
:
import org.junit.jupiter.api.Test; import org.mockito.Mockito; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; public class MyClassTest { @Test void testAddMethod() { MyClass myClassSpy = spy(MyClass.class); when(myClassSpy.internalMethod()).thenReturn(10); // Mock the internal method int result = myClassSpy.add(2, 3); assertEquals(15, result); // 2 + 3 + 10 = 15 } }
Dalam contoh ini, kita membuat pengintip MyClass
. Kemudian, dengan menggunakan when(myClassSpy.internalMethod()).thenReturn(10);
, kami membantah internalMethod
untuk kembali 10, mengasingkan tingkah lakunya dari ujian kaedah add
. Penegasan itu kemudiannya mengesahkan bahawa kaedah add
berkelakuan dengan betul diberikan yang dihina internalMethod
. Ini bermakna anda boleh mengekalkan pelaksanaan sebenar kebanyakan kaedah sementara secara selektif mengejek kaedah tertentu. Untuk menggunakannya, anda membuat pengintip menggunakan
spy
Ini akan membuat objek pengintip spy
. Panggilan ke Mockito.spy(yourObject)
pada when()
akan kembali 10. Semua kaedah lain akan menggunakan pelaksanaan sebenar mereka. Ini membolehkan ujian sasaran tingkah laku kaedah tertentu secara berasingan dari seluruh kelas. Ingatlah bahawa anda mesti menggunakan
internalMethod
Atas ialah kandungan terperinci Mockito Spy: mengejek kaedah dalam contoh kelas yang sama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!