Mockito Bila / Kemudian Buku Masak

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.