1. Gambaran keseluruhan
Buku masakan ini menunjukkan cara menggunakan Mockito untuk mengkonfigurasi tingkah laku dalam pelbagai contoh dan kes penggunaan.
The format buku masakan adalah contoh tertumpu dan praktikal - tiada maklumat luaran dan penjelasan yang diperlukan.
Dan tentu saja, jika anda ingin mengetahui lebih lanjut mengenai menguji dengan baik dengan Mockito, lihat artikel Mockito yang lain di sini.
Kami akan mengejek pelaksanaan senarai sederhana - pelaksanaan yang sama seperti yang kami gunakan dalam buku masakan sebelumnya:
public class MyList extends AbstractList { @Override public String get(final int index) { return null; } @Override public int size() { return 1; } }
2. Buku masakan
konfigurasikan tingkah laku pengembalian sederhana untuk ejekan
MyList listMock = Mockito.mock(MyList.class); when(listMock.add(anyString())).thenReturn(false); boolean added = listMock.add(randomAlphabetic(6)); assertThat(added, is(false));
konfigurasikan tingkah laku kembali untuk mengejek dengan cara alternatif
MyList listMock = Mockito.mock(MyList.class); doReturn(false).when(listMock).add(anyString()); boolean added = listMock.add(randomAlphabetic(6)); assertThat(added, is(false));
konfigurasikan mock untuk membuang pengecualian pada panggilan kaedah
@Test(expected = IllegalStateException.class) public void givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown() { MyList listMock = Mockito.mock(MyList.class); when(listMock.add(anyString())).thenThrow(IllegalStateException.class); listMock.add(randomAlphabetic(6)); }
konfigurasikan tingkah laku kaedah dengan jenis pengembalian yang tidak sah - untuk membuang pengecualian
MyList listMock = Mockito.mock(MyList.class); doThrow(NullPointerException.class).when(listMock).clear(); listMock.clear();
konfigurasikan tingkah laku berbilang panggilan
MyList listMock = Mockito.mock(MyList.class); when(listMock.add(anyString())) .thenReturn(false) .thenThrow(IllegalStateException.class); listMock.add(randomAlphabetic(6)); listMock.add(randomAlphabetic(6)); // will throw the exception
konfigurasi tingkah laku pengintip
MyList instance = new MyList(); MyList spy = Mockito.spy(instance); doThrow(NullPointerException.class).when(spy).size(); spy.size(); // will throw the exception
kaedah konfigurasi untuk memanggil kaedah sebenar dan mendasar pada ejekan
MyList listMock = Mockito.mock(MyList.class); when(listMock.size()).thenCallRealMethod(); assertThat(listMock.size(), equalTo(1));
konfigurasikan panggilan kaedah tiruan dengan Jawapan tersuai
MyList listMock = Mockito.mock(MyList.class); doAnswer(invocation -> "Always the same").when(listMock).get(anyInt()); String element = listMock.get(1); assertThat(element, is(equalTo("Always the same")));
3. Kesimpulannya
Format ini adalah eksperimen - saya menerbitkan beberapa buku masakan pembangunan dalaman saya pada topik tertentu - di Google Jambu, Hamcrest dan sekarang Mockito . Tujuannya adalah agar maklumat ini tersedia dalam talian - dan menambahkannya setiap kali saya menemui contoh berguna baru.
Pelaksanaan semua contoh dan coretan kod ini dapat dilihat di GitHub - ini adalah projek berasaskan Maven, jadi mudah untuk diimport dan dijalankan sebagaimana adanya.