Rumah  >  Artikel  >  Java  >  @MockBean, @Mock, atau Mockito.mock(): Pendekatan Mengejek Mana Yang Perlu Anda Pilih?

@MockBean, @Mock, atau Mockito.mock(): Pendekatan Mengejek Mana Yang Perlu Anda Pilih?

Patricia Arquette
Patricia Arquetteasal
2024-11-01 05:17:27964semak imbas

  @MockBean, @Mock, or Mockito.mock(): Which Mocking Approach Should You Choose?

Memahami @MockBean, @Mock, dan Mockito.mock() untuk Mengejek Berkesan

Dalam bidang ujian perisian, kebergantungan mengejek dimainkan peranan penting dalam mengasingkan dan menguji komponen individu. Di antara pelbagai pendekatan yang tersedia, artikel ini menyelidiki nuansa antara @MockBean, @Mock, dan Mockito.mock() untuk ejekan kebergantungan.

@Mock (@Mock and Mockito.mock())

Mockito's @Mock dan Mockito.mock() adalah setara dan membenarkan untuk kelas atau antara muka mengejek, membolehkan rakaman dan pengesahan tingkah laku. Pendekatan berasaskan anotasi selalunya diutamakan kerana ringkasnya.

@MockBean (Spring Boot)

@MockBean ialah kelas Spring Boot yang direka khusus untuk memperkenalkan olok-olok ke dalam Konteks Aplikasi Musim Bunga. Tidak seperti @Mock, ia tidak menggantikan kacang sedia ada tetapi menambah atau menggantikan kacang yang serasi dengan kelas olok-olok.

Bila Gunakan Apa?

Keputusan antara @Mock dan @MockBean bergantung pada keperluan ujian. Untuk ujian unit yang tidak memerlukan kebergantungan Spring Boot dan mengutamakan kelajuan pelaksanaan, @Mock disyorkan.

Namun, jika ujian bergantung pada bekas Spring Boot dan memerlukan mengejek atau menggantikan kacang bekas, @MockBean menawarkan kemudahan penyelesaian.

Lazim @MockBean Contoh

Sekeping ujian web menggunakan @WebMvcTest selalunya menggunakan @MockBean untuk mengejek kebergantungan:

@MockBean
private FooService fooServiceMock;

Dalam kaedah ujian, perkhidmatan yang diejek boleh dikonfigurasikan dan kelakuannya disahkan :

@Test
public void testExample() throws Exception {
    Foo mockedFoo = new Foo("one", "two");
    Mockito.when(fooServiceMock.get(1)).thenReturn(mockedFoo);

    mvc.perform(get("foos/1")
       .accept(MediaType.TEXT_PLAIN))
       .andExpect(status().isOk())
       .andExpect(content().string("one two"));
}

Dengan memahami fungsi berbeza @MockBean, @Mock, dan Mockito.mock(), pembangun boleh memilih pendekatan yang paling sesuai untuk keperluan ejekan khusus mereka, yang membawa kepada ujian yang cekap dan berkesan.

Atas ialah kandungan terperinci @MockBean, @Mock, atau Mockito.mock(): Pendekatan Mengejek Mana Yang Perlu Anda Pilih?. 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