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!