Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menguji Kelas dengan Panggilan `new()` Terbenam Menggunakan Mockito Spies?

Bagaimana untuk Menguji Kelas dengan Panggilan `new()` Terbenam Menggunakan Mockito Spies?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 12:48:29814semak imbas

How to Test Classes with Embedded `new()` Calls Using Mockito Spies?

Menguji Kelas dengan Terbenam baharu() Panggilan Menggunakan Mockito

Pertimbangkan kelas warisan (TestedClass) yang menjadikan objek LoginContext menggunakan panggilan new() langsung:

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

Menguji kelas ini boleh mencabar apabila LoginContext instantiasi memerlukan konfigurasi keselamatan JAAS yang khusus. Untuk menangani perkara ini, kami meneroka penggunaan Mockito untuk mengejek kelas LoginContext tanpa mengubah suai kod sumber asal.

Menggunakan Mockito Spies

Mockito menyediakan mekanisme mudah yang dipanggil pengintip yang membolehkan kami mencipta pengintip objek sebenar, yang melaksanakan kaedah berikut:

  • KaedahSebenar dipanggil secara lalai (melainkan jika ditikam secara individu).
  • Pengintip boleh digunakan dengan berhati-hati untuk senario kod warisan.

Untuk menguji kelas kami dengan pengintip, kami boleh memperkenalkan kod berikut:

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

Kod ini mencipta seorang pengintip contoh TestedClass (tc ) dan mengejek kelas LoginContext melalui lcMock. Pernyataan when() memotong kaedah login() untuk mengembalikan LoginContext yang dipermainkan.

Menggajikan pengintip membolehkan kami menguji kelas asal tanpa mengubah mekanisme panggilan new()nya, menawarkan pendekatan ujian yang fleksibel dan berkesan.

Atas ialah kandungan terperinci Bagaimana untuk Menguji Kelas dengan Panggilan `new()` Terbenam Menggunakan Mockito Spies?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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