Mengejek Hanya Panggilan Kaedah Tertentu dalam Superclass dengan Mockito
Apabila menjalankan ujian unit menggunakan Mockito, anda mungkin perlu mengejek hanya yang tertentu panggilan ke kaedah dalam superclass sambil membiarkan panggilan lain tidak terjejas. Pertimbangkan senario berikut:
<code class="java">class BaseService { public void save() {...} } public Childservice extends BaseService { public void save(){ //some code super.save(); } }</code>
Dalam contoh ini, anda hanya mahu mengejek panggilan ke super.save() dalam kelas ChildService, mengekalkan gelagat panggilan kaedah save() yang lain.
Penyelesaian Menggunakan Intipan dan Stubbing
Walaupun pemfaktoran semula mungkin merupakan penyelesaian yang berdaya maju, ia tidak selalunya boleh dilaksanakan. Dalam kes sedemikian, anda boleh memanfaatkan teknik pengintipan dan stubbing untuk mencapai tingkah laku mengejek yang diingini:
<code class="java">@Test public void testSave() { ChildService classToTest = Mockito.spy(new ChildService()); // Prevent/stub logic in super.save() Mockito.doNothing().when((BaseService)classToTest).validate(); // When classToTest.save(); // Then verify(classToTest).load(); }</code>
Penjelasan:
Dengan menggunakan pengintipan dan stubbing, anda boleh mensimulasikan tingkah laku mengejek yang diingini dengan berkesan, membolehkan anda menguji panggilan kaedah tertentu dalam kelas super sambil mengekalkan kefungsian asal.
Atas ialah kandungan terperinci Bagaimana untuk Mengejek Hanya Panggilan Kaedah Tertentu dalam Superclass dengan Mockito?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!