Rumah > Java > javaTutorial > teks badan

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

Mary-Kate Olsen
Lepaskan: 2024-10-27 12:48:29
asal
813 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!