Rumah > Java > javaTutorial > Bagaimanakah Anda Boleh Mengejek Kelas dengan Panggilan `new()` Menggunakan Mockito?

Bagaimanakah Anda Boleh Mengejek Kelas dengan Panggilan `new()` Menggunakan Mockito?

Mary-Kate Olsen
Lepaskan: 2024-10-30 00:23:29
asal
676 orang telah melayarinya

How Can You Mock a Class with a `new()` Call Using Mockito?

Mengejek Kelas dengan Panggilan () Baharu Menggunakan Mockito

Kelas warisan selalunya membuat seketika objek secara dalaman, menjadikannya mencabar untuk mengujinya menggunakan ejekan rangka kerja seperti Mockito. Ini menjadi jelas apabila menyediakan kebergantungan yang kompleks, seperti konteks keselamatan yang memerlukan persediaan luaran.

Pertimbangkan kelas contoh:

<code class="java">public class TestedClass {
  public LoginContext login(String user, String password) {
    LoginContext lc = new LoginContext("login", callbackHandler);
  }
}</code>
Salin selepas log masuk

Kami mahu menguji kelas ini, tetapi log masuk() kaedah membuat seketika objek LoginContext, merumitkan ejekan tanpa memfaktorkan semula kod.

Bolehkah Mockito mengejek LoginContext?

Ya, adalah mungkin untuk mengejek kelas LoginContext menggunakan Mockito dengan memanfaatkan ciri kuat pengintip. Tidak seperti stub, mata-mata memanggil kaedah sebenar objek yang diintip (melainkan kaedah telah distub).

Menggunakan Spies untuk Mengejek Log MasukKonteks

Untuk mengejek Konteks Masuk tanpa mengubah kod sumber, kita boleh menggunakan pendekatan berikut:

<code class="java">TestedClass tc = spy(new TestedClass());
LoginContext lcMock = mock(LoginContext.class);
when(tc.login(anyString(), anyString())).thenReturn(lcMock);</code>
Salin selepas log masuk

Kesimpulan

Dengan menggunakan pengintip secara strategik, kami boleh mengejek kelas yang membuat seketika objek secara dalaman dengan berkesan. , walaupun apabila kod asal kekal tidak disentuh. Teknik ini membolehkan kami menguji kelas tersebut dengan cekap dan memastikan tingkah laku mereka memenuhi jangkaan.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mengejek Kelas dengan Panggilan `new()` Menggunakan Mockito?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan