2.1 @Mock anotasi
Ada dua cara untuk bekerja dengan objek tiruan di Mockito. Yang pertama adalah membuat objek yang sepenuhnya virtual , yang kedua adalah membungkus objek yang ada di dalam sebuah pembungkus. Mari kita mulai dengan yang pertama.
Untuk membuat objek yang sepenuhnya virtual, Anda perlu menulis kode:
ClassName variable name = Mockito.mock(ClassName.class);
Mari kita buat kelas ArrayList tiruan sebagai contoh:
@ExtendWith(MockitoExtension.class)
class MockTest {
@Test
public void whenNotUseMockAnnotation_thenCorrect() {
List mockList = Mockito.mock(ArrayList.class);
//these methods won't do anything - they are stubs
mockList.add("one");
mockList.add("two");
}
}
Dalam contoh ini, kami membuat ArrayList palsu dan menyimpan referensi ke dalam variabel mockList. Metode objek ini tidak melakukan apa-apa.
Omong-omong, kode ini dapat ditulis lebih pendek, karena ada anotasi khusus untuk ini @Mock
.
@ExtendWith(MockitoExtension.class)
class MockTest {
@Mock
List mockList;
@Test
public void whenNotUseMockAnnotation_thenCorrect() {
//these methods won't do anything - they are stubs
mockList.add("one");
mockList.add("two");
}
}
Dalam kasus kedua, MockitoExtension
ini akan menganalisis kode kelas itu sendiri dan membuat stub yang diperlukan. Anda tidak perlu memanggil metode Mockito.mock()
. Satu anotasi dan objek virtual siap. Kecantikan.
2.2 Anotasi @Spy
Jenis objek penting kedua di Mockito adalah pembungkus objek yang ada. Mereka mengizinkan, di satu sisi, untuk menggunakan kelas yang ada, dan di sisi lain, mencegat panggilan ke semua metode dan variabel objek tersebut: untuk memperbaiki pekerjaan mereka jika perlu. Mereka digunakan sesering objek Mock.
Untuk membuat pembungkus objek, Anda perlu menulis kode:
ClassName variable name = Mockito.spy(an object);
Contoh dengan pembungkus di sekitar kelas ArrayList:
@ExtendWith(MockitoExtension.class)
class SpyTest {
@Test
public void whenMockAnnotation() {
List<String> mockList = Mockito.spy(new ArrayList<String>());
//these methods will work!
mockList.add("one");
mockList.add("two");
}
}
Dalam bentuknya yang paling sederhana, panggilan ke objek pembungkus hanya mengalihkan panggilan ke objek asli, referensi yang disimpannya di dalam dirinya sendiri . Semuanya akan berfungsi seperti objek aslinya.
Anda juga dapat membuat pembungkus menggunakan anotasi - @Spy
.
@ExtendWith(MockitoExtension.class)
class SpyTest {
@Spy
List mockList = new ArrayList<String>();
@Test
public void whenMockAnnotation() {
// these methods will work!
mockList.add("one");
mockList.add("two");
}
}
Kedua contoh kode ini setara.